1

我正在使用为 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# 中处理。

4

1 回答 1

1

这只有在您创建XAML 和 Direct3D 应用程序时才有可能。在这种情况下,您可以在另一个 SO 问题中使用 Windows 运行时方法从 C++ 调用到 C#。

由于无法在手机上创建 C# Windows 运行时组件(与 Windows 应用商店应用不同),因此无法从本机 C++ 项目调用 C# 方法。

于 2013-10-16T13:48:33.623 回答