我似乎不知道如何将一个数组从导出的 C++ DLL 返回到我的 C# 程序。我从谷歌搜索中发现的唯一一件事是使用 Marshal.Copy() 将数组复制到缓冲区中,但这并没有给我想要返回的值,我不知道它给了我什么。
这是我一直在尝试的:
导出函数:
extern "C" __declspec(dllexport) int* Test()
{
int arr[] = {1,2,3,4,5};
return arr;
}
C#部分:
[DllImport("Dump.dll")]
public extern static int[] test();
static void Main(string[] args)
{
Console.WriteLine(test()[0]);
Console.ReadKey();
}
我知道返回类型 int[] 可能是错误的,因为托管/非托管的差异,我只是不知道从这里去哪里。除了将字符数组返回到字符串而不是整数数组之外,我似乎找不到任何答案。
我认为我使用 Marshal.Copy 获得的值不是我要返回的值的原因是因为导出函数中的“arr”数组被删除但我不是 100% 确定,如果有人可以清除这个那很好啊。