关于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,这个问题出在哪了?
展开
 我来答
枚少少
2013-03-11 · TA获得超过225个赞
知道小有建树答主
回答量:308
采纳率:50%
帮助的人:175万
展开全部
C#的内存和C++的解析方式不一样

按照你说的,你获取数组,但是里面全是0

证明你能获取数组的内存,和内存属性,

但是数组里面的基本属性是不一样的,所以默认为0了
wangnasa
2013-03-11 · TA获得超过776个赞
知道小有建树答主
回答量:732
采纳率:100%
帮助的人:631万
展开全部
C#:public static extern void f([MarshalAs(UnmanagedType.LPArray, SizeParamIndex = 0)] ref int[] res);
在调用的时候 也要加ref 例如
int[] res=new int[10];
f(ref res);
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式