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

3
我有一个UWP C++/cx应用程序和UWP C#类库。如何在C++项目中使用来自C#库的类?
以下是一些可能的解决方案:
  • C++/CLI不支持UWP应用程序,因此我无法创建c++/cli包装器。
  • 我不确定,但似乎在UWP世界中COM包装不是一个选项。
  • Reverse P/Invoke不是一个选项,因为宿主应用程序是c++。
  • Windows运行时组件还需要从C#代码接收回调,但只能在c++代码中实例化。
请问还有其他的建议吗?
P.S. 我不能使用“c#代理应用程序”,我的应用程序属于c++/cx类型。

为什么无法从C++/CX访问您的UWP类库? - IInspectable
我可以给C++应用程序添加类库引用,但是没有对应的影响。我看不到类库的命名空间和类。然而,它们是公共的。也许我漏掉了一些明显的东西? - Ingerdev
1
使用C#和Visual Basic创建Windows Runtime组件 - Raymond Chen
请不要在您的问题中写上“已解决”。请发布一个答案。 - Raymond Chen
2个回答

1
标准的UWP C#类库在C++/CX中是不可见的。
应该创建代理库“Windows Runtime组件”并将其添加到C++类中。

0

如果您想了解如何实现这一点,可以查看React Native Windows中的ChakraBridge C++/CX项目的使用示例: https://github.com/Microsoft/react-native-windows/tree/master/ReactWindows/ChakraBridge

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接