如何将C++对象传递给C#类库

how to Pass C++ Object to C# Class Library

本文关键字:类库 对象 C++      更新时间:2023-10-16

我正在做一个项目。其中C++代码引用了一个用C#编写的类库。我想把C++类的Object传递到C#类库。那么这可能吗?如果可能,请告诉我怎么做??否则,我将不得不向C#类库传递大约100个参数。

谨致问候,Vivek

您应该使用沼泽。

封送是在托管代码和非托管代码之间建立桥梁的过程;它是将消息从托管环境传递到非托管环境并反向传递的homer。它是CLR(公共语言运行时)提供的核心服务之一

命名空间System.Runtime.InteropServices.Marshal

在这里阅读一个关于沼泽的好博客

如果有此选项,您可以向项目中添加一个cpp文件,该文件将使用启用的CLR(托管C++)进行编译。从托管C++中,您可以调用C#类。你可以在这里找到例子:

管理C++以在C#和C++之间形成桥梁

如果您不想在调用本机应用程序中启用CLR,另一种选择是创建托管C++dll作为C++和.NET之间的桥梁。我使用了这个技巧,效果很好,但请注意,一旦加载了桥接dll库,CLR就会加载到内存中,您的进程就会被CLR"感染"。无论如何,你都会有这种效果。