我有一個調用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