Search code examples
c#.netpinvokemarshallingcom-interop

pinvoke c#: how can i map "const char **output"?


i have a C function with this prototype:

void foo(const char **output);

i compiled C file into a DLL and a i make DllImport("my.dll");

but how should i write c# prototype?

Thank you very much!


Solution

  • That will be a Pointer to byte array:

     private static extern void foo(IntPtr pointerToByteArray);
    

    Usage:

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