我正在使用为 Windows Phone 8 应用程序生成本机 C++ 项目(DirectX) 的游戏引擎。但是,要集成应用内计费等功能,每次在引擎中触发特定的 C++ 方法时,我都需要调用 C# 方法。在 WP8 中有一个名为从 C++ 调用 C# 方法的 SO 线程,这显然是相反的:“基于 C# 的应用程序实际上调用了 C++ 方法”。
我现在遇到的问题是我public ref class sealed
使用 Visual Studio 2012 Express for Windows Phone 创建了一个带有 C++/CX 的“Visual C++ -> Windows Phone 运行时组件”。这引用了“Visual C# -> Windows Store 类库”的 .winmd 文件,该文件的项目属性设置为“Windows 运行时组件”。有趣的是,我不得不在 Visual Studio 2012 Express for Windows 8(不是 Windows Phone)中创建它,因为 VS for WP8 不提供生成 .winmd 文件的选项。编译我的游戏我收到以下错误消息:
没有为 .winmd 文件“...\InAppBilling.winmd”提供实现文件。要在应用清单中生成注册信息,请在项目文件中的 winmd 引用项上指定“实施”元数据。
如何从 C++ 中调用 C# 方法?我不需要任何花哨的东西,如 DLL、继承、委托等。只需一个简单的静态调用即可,其他一切都将在 C# 中处理。