繁体   English   中英

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

[英]Could not add reference to WinRT C++ DLL project

情景:

我正在基于“Direct3D App”Visual Studio代码示例为Windows应用商店应用程序制作[edit:native WinRT] C ++ Direct X DLL项目。

这必须是我的Windows Store App项目中的一个单独的DLL项目,因为我将在Windows 8 Metro应用程序和Windows Phone版本的应用程序中使用我的XAML UserControl和Direct X渲染器。

问题:

我无法在C#Windows Store应用程序项目中引用C ++项目。 Visual Studio拒绝使用以下单词:

A reference to <project-name> could not be added.

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

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

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

问题:

如何引用C ++项目以便在C#Windows Store App项目中使用我的XAML Direct X渲染器? 还是有更好的选择吗?

提前致谢。

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

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

这是因为@ user1610015的答案,我意识到我实际上是在开发原生的Win RT代码,而不是托管代码,这导致我尝试这个解决方案 - 谢谢!

/ ZW标志用于C ++ / CX项目。 C ++ / CX在语法上几乎与托管C ++(C ++ / CLI)完全相同,只是C ++ / CX完全不受管理。 这可能是你认为你正在开发托管C ++的原因,而事实上你并非如此。

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

另一种选择是在没有C ++ / CX的情况下与Windows Runtime交谈。 虽然C ++ / CX使Windows运行时编程变得更加容易,但并不是绝对必要的。 您也可以使用WRL库。 由于WRL库是纯C ++,因此它也应该可以从C ++ / CLI使用。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM