在托管C ++中声明可从C#使用的结构

时间:2014-11-03 13:28:13

标签: c# c++-cli

我有一个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类,这是我的监听器的设置方式,但我希望这是一个结构。

0 个答案:

没有答案