从UWP c++/cx调用UWP c#代码

本文关键字:UWP 代码 调用 c++ cx | 更新日期: 2023-09-27 17:52:52

我有一个UWP c++/cx应用程序和UWP c#类库。
我如何在c++项目中使用c#库中的类?

  • c++/CLI不支持UWP应用程序,所以我不能做c++/CLI包装。
  • 我不确定,但看起来COM包装不是UWP世界的一个选项。
  • 反向P/Invoke不是一个选项,因为宿主应用程序是c++
  • Windows运行时组件也需要c#代码的回调,但是它只能在c++代码中实例化。

有什么建议吗?

注:
我不能有"c#代理应用程序",我的应用程序的类型是c++/cx.

从UWP c++/cx调用UWP c#代码

标准uwp c#类库对c++/cx不可见。
应该创建代理库"windows runtime component"并将其添加到c++类中。

关于如何做到这一点的一个很好的例子,看看如何在React Native Windows中使用ChakraBridge c++/CX项目:https://github.com/Microsoft/react-native-windows/tree/master/ReactWindows/ChakraBridge

c#调用c++/CX,然后返回,完全透明,符合CLR允许的跨语言工作流。在React Native Windows中也有一个pull请求,展示了如何添加一些编译时指令,允许共享c++/CX和c++/CLI代码:https://github.com/Microsoft/react-native-windows/pull/769/