如何在C#中将指向结构的指针作为函数参数传递?
我正在尝试使用DLL中的一个函数,该函数的一个参数是双指针。例如,
struct mystruct
{
int a;
char b;
};
[DllImport("mydll.dll")]
private static extern int func_name(int a, char b, mystruct** c);
我想使用像int *a
这样的指针的正确方法是ref int a
。 int **a
是否有类似内容?
答案 0 :(得分:2)
指向指针的CLR等效项为ref IntPtr
。
IntPtr
是指向整数的指针,当你通过ref
传递它时,它通过引用传递,使其成为指针的指针。
您可能还需要使用Marshal.PtrToStructure
method将指针转换为结构对象。
有关详细信息,请参阅this article底部附近标题为“手动编组”的部分。
答案 1 :(得分:0)
我会以不同的方式工作 任何指针都应该用作
然后我会用System.IntPtr
Marshal.PtrToStructure
用于将指针实际转换为实际结构。否则我也会考虑使用偏移量逐字段复制,这有时更容易调试。