无法添加对WINRT C DLL项目的参考

Could not add reference to WinRT C++ DLL project

本文关键字:DLL 项目 参考 WINRT 添加      更新时间:2023-10-16

方案:

我正在基于" Direct3D App" Visual Studio Code示例的Windows Store应用程序进行[编辑:本机Winrt] C Direct X DLL项目。

这一定是我的Windows Store应用程序项目的单独的DLL项目,因为我将在Windows 8 Metro App中使用Direct X Renderer的Xaml UserControl和该应用程序的Windows Phone版本。

问题:

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

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

我已经看到了使用/CLR标志编译C 项目的建议,但这与:

不兼容:
  • 项目中某些API要求的/ZW标志
  • " WR.H"标题
  • 项目设置中的许多其他命令行标志

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

问题:

如何参考C 项目,以便可以在C#Windows Store应用程序项目中使用XAML Direct X Renderer?还是有更好的选择?

预先感谢。

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

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

由于 @user1610015的答案,我意识到我实际上正在开发本机赢RT代码,而不是托管代码,这使我尝试了此解决方案 - 谢谢!

/zw 标志适用于C /CX项目。C /CX在语法中几乎与托管C (C /CLI)几乎相同,只是C /CX完全不受管理。这可能是您认为您正在开发管理的C 的原因,而实际上您不是。

我尚未使用C /CX,但是根据我所听到的,Windows Runtime类是COM类。因此,我认为您可以从Windows SDK使用 tlbimp.exe 工具来从未管理的DLL中创建托管DLL,然后您可以从C#项目中引用。尝试一下,让我知道它是否有效。

另一个选择是与没有C /CX的Windows运行时交谈。虽然C /CX使Windows运行时编程变得容易得多,但这并非严格必要。您也可以使用WRL库。由于WRL库是纯C ,因此它也应从C /CLI中使用。