我有一个调用C++函数的C#代码。C++函数中的数组更改没有保存在C#中
C++函数应该填充通过指针传递的缓冲区。但是,数组返回空。
进口声明:
[DllImport("ProjectLogicInterface", EntryPoint = "FillArr", CallingConvention = CallingConvention.Cdecl)]
public static extern UInt32 FillArr(char[] arr);
的代码,简化后并输入一些硬编码值看起来像这样:
在C#代码:
char[] arr= new char[10];
ret = LogicInterface.FillArr(arr);
的C++代码:
bool FillArr(char* arr)
{
int length=10;
for(int i = 0; i < length; i++)
{
arr[i] = 3; //replaced with some hard coded value
}
return true;
}
但是,该阵列仍为空。
有什么建议吗?
会编组,然后针罩下的内存? – Nick 2012-04-04 10:25:34
是的。看到这里:http://msdn.microsoft.com/en-us/magazine/cc163910.aspx#S2 – Pedro 2012-04-04 10:59:49