【发布时间】:2012-04-18 00:45:05
【问题描述】:
我有一个调用 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;
}
但是,数组仍然是空的。
有什么建议吗?
【问题讨论】:
标签: c# c++ pointers marshalling dllimport