2010-11-23 74 views
2

如何将指针传递给C#中的函数参数作为结构体的指针?作为C#中的函数参数传递指向结构体的指针的指针

我想从一个DLL函数中使用它的一个参数作为双指针。对于例如,

struct mystruct 
{ 
    int a; 
    char b; 
}; 

[DllImport("mydll.dll")] 
private static extern int func_name(int a, char b, mystruct** c); 

我想用一个指针像int *aref int a的正确方法。有没有类似的int **a

回答

0

我会以不同的方式工作。
任何指针应被用作

System.IntPtr

,然后我会用

Marshal.PtrToStructure

用于指针的实际转换到实际的结构。否则,我也会考虑逐场复制偏移量,这有时更易于调试。

2

指向指针的CLR等效指针是ref IntPtr

IntPtr是一个指向整数的指针,当它通过ref传递时,它通过引用传递,使它成为指针的指针。

您可能还需要使用Marshal.PtrToStructure method将指针转换为结构对象。

有关更多信息,请参阅this article底部附近标题为“手动编组”的小节。

相关问题