方案:
我正在基于" 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中使用。