C#调用c的dll出错,急!急!急!
函数原型:void _stdcall ReleaseMemory(unsigned char **OUTData) 函数功能:释放内存
C#调用: [DllImport("a.dll")]
public static extern void ReleaseMemory(ref StringBuilder OUTData);
出现错误:
尝试读取或写入受保护的内存。这通常指示其他内存已损坏
用string也是同样的错误,无助啊!
------解决方案--------------------byte或void**是这样用的:
void* pv = IntPtr.Zero.ToPointer();
void** OutData= &pv;
当然你用ref byte*也可以。
取内容用Marshal.PtrToStringAnsi(new IntPtr(*OutData,length),); 这是void**的时候