声明一个结构,从C#可用,在托管C ++(Declaring a struct, usable fr

2019-10-21 05:07发布

我有其中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#代码可以参考? 我知道如何定义一个引用类,这是我的听众是如何设置的,但我想这是一个结构。

文章来源: Declaring a struct, usable from C#, in managed C++
标签: c# c++-cli