C# pinvoke c:“我怎样才能绘制地图?”;常量字符**输出“;?
我有一个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
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)
。