C# pinvoke c:“我怎样才能绘制地图?”;常量字符**输出“;?

C# pinvoke c:“我怎样才能绘制地图?”;常量字符**输出“;?,c#,.net,pinvoke,marshalling,com-interop,C#,.net,Pinvoke,Marshalling,Com Interop,我有一个C函数和这个原型: void foo(const char **output); 我把C文件编译成一个DLL和一个我制作的DllImport(“my.DLL”) 但是我应该如何编写c#prototype呢 多谢各位 这将是指向字节数组的指针: private static extern void foo(IntPtr pointerToByteArray); 用法: fixed(byte* buffer = new byte[LENGTH_WHICH_YOU_KNO

我有一个C函数和这个原型:

void foo(const char **output);
我把C文件编译成一个DLL和一个我制作的DllImport(“my.DLL”)

但是我应该如何编写c#prototype呢


多谢各位

这将是指向字节数组的指针:

 private static extern void foo(IntPtr pointerToByteArray);
用法:

        fixed(byte* buffer = new byte[LENGTH_WHICH_YOU_KNOW_IS_ENOUGH])
        {
            IntPtr ptr = new IntPtr(buffer);
            foo(ptr);
        }

这可能意味着很多事情。显示一个演示foo()如何使用参数的代码段。非常感谢,它可以工作!我使用以下代码来恢复字符串的值:IntPtr nestedPtr=Marshal.ReadIntPtr(ptr);字符串值=Marshal.PtrToStringAnsi(nestedPtr);通过调用foo并提取字符串(使用finally子句)后,使用
IntPtr ptr=Marshal.AllocHGlobal(LENGTH_,您知道它足够长);
不要忘记
Marshal.FreeHGlobal(ptr)