我有一个用Visual 2012创建的windows 8应用程序--VisualC++下的"Windows Direct3D App (仅原生的)“项目,以及具有目标平台"Windows 8.0”的VisualC#组下的"Windows类库“项目创建的库。我所需要的只是在C#代码中使用C++ dll。限制是我不能更改应用程序的体系结构,所以主入口点必须在C++项目中,然后从这里以某种方式调用用C#编写的代码。
如果我尝试在C#应用程序中引用C++ dll,就会得到这个错误。
不能添加对dllname的引用,因为两个项目的目标是不同的运行时。
基于http://msdn.microsoft.com/en-us/library/windowsphone/develop/jj714080(v=vs.105).aspx,我还试图通过Visual C++ "Windows运行时组件“间接引用C# dll,但当我试图添加对运行时组件的引用时,再次出现相同的错误。我试图更改一些项目设置,但没有任何效果。在我在网络上找到的所有示例和演示中,对于WP8,主要的入口点总是在C#中。只有一些关于windows商店应用程序的提示似乎表明可以从C++上使用C++,但我没有发现任何明确的引用表明我在wp8上的场景是可能的或不可能的。
预先感谢任何分享解决方案或任何建议的人。
发布于 2013-05-20 05:47:03
在Windows8中,C# WinRT dll是一个完整的WinRT dll,然后可以被任何框架(WinJS、原生等)所使用。但电话可不是这样。
在电话中,C#可以使用C++ WinRT对象(来自C++ dll),但反之亦然。您可以通过让您的C# dll调用到您的C++ dll中并传递函数指针来创建欺骗,但仅此而已。
发布于 2013-05-27 13:22:21
我喜欢这个:8。您可以向.winmd C++端元数据中注入一个接口,这些元数据可以在C#中引用和实现。比使用代表要干净得多。还得从C#开始.
https://stackoverflow.com/questions/14535468
复制相似问题