【发布时间】:2011-05-12 15:10:18
【问题描述】:
我有一个 C 函数,它接受多个双间接指针参数。
类似的东西
int myFunction (int ** foo, int** bar, int **baz){
int size = figureOutSizeFunction();
*foo = (int*) malloc (sizeof(int) * size);
return SomeOtherValue;
}
现在在 C# 中,我试图将它传递给 IntPtr,但是 IntPtr 始终为零。当我将这些值传递给下一个 DLL C 函数时,DLL 因系统访问冲突而失败。我知道代码在纯 C 环境中工作(我有一个测试代码的“main”)但是,当从 C# 调用时它不起作用
我需要在 C# 中将什么变量类型传递给 C DLL? ref ref int?
【问题讨论】:
-
你想通过
ref IntPtr然后使用Marshal.PtrToStructure读出数组。然后,您需要再次调用 DLL 才能免费调用。最后,为什么要转换 malloc() 的返回值?这很糟糕。