3

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

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

4

2 回答 2

1

迟到的答案,但简短的故事是你不能。在 Windows 8 C# 中,WinRT dll 是完整的 WinRT dll,然后可以被任何框架(WinJS、Native 等)使用,但对于手机来说却不是这样。

在手机上,C# 可以使用 C++ WinRT 对象(来自 C++ dll),但反之则不行。您可以通过让您的 C# dll 调用您的 C++ dll 并传递函数指针来创建诡计,但仅此而已。

于 2013-05-20T05:47:03.547 回答
1

我喜欢这个: http: //www.developer.nokia.com/Community/Wiki/C%2B%2B_support_from_Windows_Phone_8。您可以将接口注入到 .winmd C++ 端元数据中,该接口可以在 C# 中引用和实现。比使用委托要干净得多...仍然必须从 C# 启动...

于 2013-05-27T13:22:21.367 回答