在C#中调用托管C++DLL,并传递结构体

时间:2022-08-30 19:56:00
我用C++编写了一个DLL动态链接库,并且同托管C++封装了一下。其中有一个结构体,比如

typedef struct
{
int a;
int b;
}INFO;

然后我定义了一个函数将这个结构体里面的数据打印出来

int testStruct(INFO *info)
{
cout << "a = " << info->a << endl;
cout << "b = " << info->b << endl;
return 1;
}

然后使用托管C++封装了一个类,在类里调用了这个方法。

我想在C#写的程序中再定义上面的结构体,并对其复制,并调用上面的方法打印输出这些值

public struct INFO
{
     public int a;
     public int b;
}

INFO info;
info.a = 1000;
info.b = 10;
ClrClass.test1(info);

像我这样写肯定是不行的,哪位大神能指导一下吗?网上的方法貌似都只适用于非托管C++
然后我还想把结构体返回

3 个解决方案

#1


把struct换成class
上面再加个StructLayoutAttribute
应该就对了

#2


引用 1 楼 shingoscar 的回复:
把struct换成class
上面再加个StructLayoutAttribute
应该就对了

能具体点吗??小白并不大懂 在C#中调用托管C++DLL,并传递结构体

#3


托管C++的话跟C#基本一样了啊,导入直接就可以用了。 

#1


把struct换成class
上面再加个StructLayoutAttribute
应该就对了

#2


引用 1 楼 shingoscar 的回复:
把struct换成class
上面再加个StructLayoutAttribute
应该就对了

能具体点吗??小白并不大懂 在C#中调用托管C++DLL,并传递结构体

#3


托管C++的话跟C#基本一样了啊,导入直接就可以用了。