在 Windows Phone 8 的 C++ 中使用 C# dll

本文关键字:dll C++ Windows Phone | 更新日期: 2023-09-27 17:56:19

我有一个使用 Visual Studio 2012 创建的 Windows Phone 8 应用程序 - Visual C++下的"Windows Phone Direct3D App (Native only)"项目,以及一个在 Visual C# 组下使用 "Windows Phone Class Library" 项目创建的库,其目标平台为"Windows Phone OS 8.0"。我所需要的只是在C++代码中使用 C# dll。限制是我无法更改应用程序的体系结构,因此主入口点必须在C++项目中,并从此处以某种方式调用用 C# 编写的代码。

如果我尝试在应用程序中引用 C# dll C++则会收到此错误

无法添加对 [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 上的方案是可能的或不可能的。

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

在 Windows Phone 8 的 C++ 中使用 C# dll

回答晚了,但短篇故事是你不能。在Windows 8中,C# WinRT dll是完整的WinRT dll,可以被任何框架(WinJS,Native等)使用,但对于手机来说并非如此。

在手机上,C# 可以使用 C++ 个 WinRT 对象(来自 C++ 个 dll),但反之则不然。可以通过将 C# dll 调用到 C++ dll 中并传递函数指针来创建技巧,但仅此而已。

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