首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法添加对WinRT C++ DLL项目的引用

无法添加对WinRT C++ DLL项目的引用
EN

Stack Overflow用户
提问于 2012-12-25 07:46:20
回答 2查看 3.4K关注 0票数 7

场景:

我正在进行编辑:本机WinRT C++ Direct3D项目的Windows应用程序基于"Direct3D应用程序“Visual代码示例。

这必须是一个独立的DLL项目从我的Windows项目,因为我将使用我的XAML UserControl与直接X渲染在它里面,无论是在Windows8Metro应用程序和Windows版本的应用。

问题:

我不能在C++ Windows应用程序项目中引用C#项目。Visual拒绝使用以下文字:

代码语言:javascript
复制
A reference to <project-name> could not be added.

我看到了使用C++标志编译/clr项目的建议,但这与以下内容不兼容:

  • 项目中某些API所需的/ZW标志。
  • "wrl.h“标题
  • 项目设置中的多个其他命令行标志。

因此,在这种情况下,/clr标志似乎不是一个选项。

问题:

如何引用C++项目,以便在C# Windows应用程序项目中使用XAML直接X呈现程序?还是有更好的选择?

提前谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-12-28 10:36:13

我通过将C++项目重新创建为Windows Runtime Component项目解决了这个问题。我最初是从Class Library (Windows Store apps)模板创建项目的。它必须是Win RT模板有一些配置设置,使它能够工作。

在进行此更改后,可以将项目添加为C#项目中的引用。

正是因为@ answer 1610015的回答,我才意识到我实际上是在开发本地Win RT代码,而不是托管代码,这导致我尝试了这个解决方案--谢谢!

票数 7
EN

Stack Overflow用户

发布于 2012-12-25 09:40:00

/ZW标志用于C++/CX项目。C++/CX的语法与托管C++ (C++/CLI)几乎相同,只是C++/CX是完全非托管的。这可能是让您认为您正在开发托管C++的原因,而实际上您没有这样做。

我没有使用C++/CX,但据我所知,Windows运行时类是COM类。因此,我认为您可以使用Windows中的TlbImp.exe工具从非托管DLL创建托管DLL,然后可以从C#项目中引用该DLL。试一试,让我知道它是否有效。

另一种选择是在没有C++/CX的情况下与Windows运行时对话。虽然C++/CX使Windows运行时编程更加容易,但严格来说并不是必要的。您还可以使用WRL库。因为WRL库是纯C++,所以它也应该可以从C++/CLI中使用。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14028713

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档