从C+;访问C#DLL的正确模式是什么+;?

从C+;访问C#DLL的正确模式是什么+;?,c#,windows-runtime,c++-cli,windows-phone-8.1,C#,Windows Runtime,C++ Cli,Windows Phone 8.1,我通常在Android/Java上工作,但现在我在Windows Phone 8.1上工作。我在一个库中有C++代码,它需要能够访问提供的C汇编程序DLL中的功能。p> C#DLL有一个接口,需要实现该接口才能接收来自DLL的回调 我所尝试的: 我尝试使用Windows运行时组件包装DLL,但它抱怨该接口不能与Windows运行时组件一起使用 我可以把DLL封装成一堆C代码,并提供一个接口,用于在DLL的任何回调上向任何实现(C++)转发,但是C++代码不想将命名空间识别为现有的命名空间。 丢失

我通常在Android/Java上工作,但现在我在Windows Phone 8.1上工作。我在一个库中有C++代码,它需要能够访问提供的C汇编程序DLL中的功能。p> C#DLL有一个接口,需要实现该接口才能接收来自DLL的回调

我所尝试的:

  • 我尝试使用Windows运行时组件包装DLL,但它抱怨该接口不能与Windows运行时组件一起使用 <>我可以把DLL封装成一堆C代码,并提供一个接口,用于在DLL的任何回调上向任何实现(C++)转发,但是C++代码不想将命名空间识别为现有的命名空间。 丢失的那块是什么

    C++/C#互操作性可以通过两种方式实现:通过Win32 DLL或COM组件

    如果计划使用Win32方法,则必须提供CLR类型的所有元数据,然后托管编译器将元数据编译到程序集中,JIT编译器将构建执行C#/Win32转换的存根

    如果计划使用COM组件,则必须使用运行时可调用包装器,这将负责实例化、类型导航、错误处理和内存管理


    关于RCW的更多信息在这里:

    我能够使用C#Windows运行时组件访问DLL。DLL中的回调接口是在C#中实现的,并将回调到C#Windows运行时组件中进行工作


    要完成的工作是调用C++ Windows运行时组件,它将与C * Windows运行时组件进行对话。C++ Windows运行时组件可以是我们拥有的C++代码库的网关。 我怀疑这是可能的。Windows运行时组件不可用?@Eddie我可以制作一个Windows运行时组件来调用提供的DLL,但我不能用它来实现DLL中定义的回调接口,编译器抱怨它们不能在Windows运行时层中使用。我相信这是因为接口签名中引用了作为参数和返回类型的类型。也许您必须用C++/CX包装回调接口。如果有任何反馈或批评可以帮助我改进答案,我将不胜感激。