我在 win32 dll 中有一个函数,其签名为:
void func1(int a, char*** outData)
Run Code Online (Sandbox Code Playgroud)
int a --> 输入参数
char*** outData --> 输出参数 - 指向字符字符串数组的指针
知道如何使用 dll 导入在 C# 中访问它以及签名应该是什么。
对于像三重指针这样的复杂类型,我发现最好的方法是简单化并将其编组为一个IntPtr
[DllImport("Some.dll")]
private static extern void func1(int a, out IntPtr ptr)
Run Code Online (Sandbox Code Playgroud)
一旦该函数返回,该IntPtr值将本质上代表一个char**.
但使用该值几乎是不可能的,因为我们不知道长度。您需要更改函数签名以传回数组的长度,然后才能在托管代码中使用它。