在C ++ for Windows Phone 8中使用C#dlls

时间:2013-01-26 09:13:09

标签: c# windows-phone-8 windows-phone c++-cx winprt

我有一个使用Visual Studio 2012创建的Windows Phone 8应用程序 - 在Visual C ++下的“Windows Phone Direct3D App(仅限本地)”项目,以及在具有目标平台的Visual C#组下使用“Windows Phone类库”项目创建的库“Windows Phone OS 8.0”。我只需要在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 Phone运行时组件”间接引用C#dll,但是当我尝试添加对运行时组件的引用时,我又遇到了同样的错误。我试图改变一些项目设置,没有任何效果。 在我在网上找到的所有样本和演示中,对于WP8,主要入口点总是在C#中。关于Windows应用程序应用程序的一些提示似乎表明可以从C ++中使用C#,但我没有找到任何明确说明我的wp8上的场景是可能的或不可能的引用。

提前感谢任何分享解决方案或任何建议的人。

2 个答案:

答案 0 :(得分:1)

迟到的答案,但短篇小说是你不能。在Windows 8 C#WinRT中,dll是完整的WinRT dll,然后可以被任何框架(WinJS,Native等)使用,但电话则不然。

在手机上C#可以使用C ++ WinRT对象(来自C ++ dll),但反之亦然。您可以通过让C#dll调用C ++ dll并传递函数指针来创建技巧,但这就是它。

答案 1 :(得分:1)

我喜欢这个:http://www.developer.nokia.com/Community/Wiki/C%2B%2B_support_from_Windows_Phone_8。您可以在.winmd C ++端元数据中注入一个接口,该接口可以在C#中引用和实现。比使用代表更清洁......仍然需要从C#...

启动