我有一个调用 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;
}
但是,数组仍然是空的。
有什么建议么?