【问题标题】:Passing pointer to a pointer to a struct as a function parameter in C#将指向结构的指针的指针作为C#中的函数参数传递
【发布时间】:2010-11-23 11:05:44
【问题描述】:

如何在 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 aint **a 有类似的吗?

【问题讨论】:

    标签: c# pointers struct parameter-passing


    【解决方案1】:

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

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

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

    有关详细信息,请参阅this article 底部附近标题为“手动编组”的部分。

    【讨论】:

      【解决方案2】:

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

      System.IntPtr

      然后我会使用

      元帅.PtrToStructure

      用于将指针实际转换为实际结构。否则我也会考虑使用偏移量逐字段复制,这有时更容易调试。

      【讨论】:

        猜你喜欢
        • 2013-11-18
        • 2013-09-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-10-24
        • 2023-03-22
        • 1970-01-01
        • 2021-07-17
        相关资源
        最近更新 更多