我有一个C#库正在使用混合模式C ++库的场景。用例如下:
1)C#代码从库(托管c ++)初始化一个监听器,它从本机C ++初始化一个监听器。
2)本机代码接收消息并解析它,然后通过IJW代码将其传递给托管c ++
3)托管c ++使用消息
从C#代码调用委托这一切都很好,除了最后一部分 - 实际上包括消息。 C#代码无法访问托管C ++中定义的数据类型。当您导航到结构的定义时,它看起来像这样:
namespace NativeWrapper
{
[CLSCompliant(false)]
[NativeCppClass]
[UnsafeValueType]
public struct MyDataType
{
}
}
正如你所看到的那样 - 它谴责它不安全并消灭了田地。我已经看到了这个问题的解决方案,其中第三个库在C#中声明了一个结构,而C#和托管C ++都使用它。我想这会起作用,但我试图避免为一个小文件创建第三个库...这个组件是一个大系统的一部分,我想保留DLL的数量I&#39 ; m尽可能小地添加它。
所以,问题是,有没有一种方法可以在托管C ++中定义C#代码可以引用的结构?我知道如何定义一个ref类,这是我的监听器的设置方式,但我希望这是一个结构。