我有其中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我加入到它的数越小越好。
所以,问题是,有没有办法,我可以在托管C定义一个struct ++的C#代码可以参考? 我知道如何定义一个引用类,这是我的听众是如何设置的,但我想这是一个结构。