
关于C#和C++混合编程的数组传递 20
请问,C#通过调用C++的DLL函数,该函数需要返回一个数组,比如是int型的数组,这个函数在C#和C++中声明分别是怎样的?我写的是C++:extern"C"__dec...
请问,C#通过调用C++的DLL函数,该函数需要返回一个数组,比如是int型的数组,这个函数在C#和C++中声明分别是怎样的?
我写的是 C++:extern "C" __declspec(dllexport) void f(int *res);
C#:public static extern void f([MarshalAs(UnmanagedType.LPArray, SizeParamIndex = 0)] int[] res);
但是,在C#代码部分,调用函数f得到的res中的值,还是全是0,这个问题出在哪了? 展开
我写的是 C++:extern "C" __declspec(dllexport) void f(int *res);
C#:public static extern void f([MarshalAs(UnmanagedType.LPArray, SizeParamIndex = 0)] int[] res);
但是,在C#代码部分,调用函数f得到的res中的值,还是全是0,这个问题出在哪了? 展开
2个回答
展开全部
C#的内存和C++的解析方式不一样
按照你说的,你获取数组,但是里面全是0
证明你能获取数组的内存,和内存属性,
但是数组里面的基本属性是不一样的,所以默认为0了
按照你说的,你获取数组,但是里面全是0
证明你能获取数组的内存,和内存属性,
但是数组里面的基本属性是不一样的,所以默认为0了
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询