我正在使用游戏引擎为Windows Phone 8应用生成本机C ++项目(DirectX)。为了集成诸如应用程序内计费这样的东西,我每次在引擎中触发特定的C ++方法时都需要调用C#方法。有一个名为calling a C# method from C++ in WP8的SO线程,显然恰恰相反:“基于C#的应用实际上调用了C ++方法”。
我现在被困住的地方是我使用Visual Studio 2012 Express for Windows Phone使用C ++ / CX public ref class sealed
创建了“Visual C ++ - > Windows Phone运行时组件”。这引用了“Visual C# - > Windows应用商店类库”的.winmd文件,其项目属性设置为“Windows运行时组件”。有趣的是,我必须在Visual Studio 2012 Express for Windows 8(不是Windows Phone)中创建它,因为VS for WP8不提供生成.winmd文件的选项。编译我的游戏我得到以下error message:
没有为.winmd文件'... \ InAppBilling.winmd'提供实现文件。要在应用清单中生成注册信息,请在项目文件中的winmd参考项上指定“实施”元数据。
如何在C ++中调用C#方法?我不需要像DLL,继承,委托等任何花哨的东西。只是一个普通的静态调用,其他一切都将在C#中处理。
答案 0 :(得分:1)
只有在您创建XAML and Direct3D app时才可以这样做。在这种情况下,您可以使用其他SO问题中的Windows运行时方法从C ++调用C#。
由于无法在手机上创建C#Windows运行时组件(与Windows应用商店应用程序不同),因此无法从本机C ++项目调用C#方法。