鉴于此 C API 声明,它将如何导入到 C#?
const char* _stdcall z4LLkGetKeySTD(void);
我已经能够做到这一点:
[DllImport("zip4_w32.dll",
CallingConvention = CallingConvention.StdCall,
EntryPoint = "z4LLkGetKeySTD",
ExactSpelling = false)]
private extern static const char* z4LLkGetKeySTD();
最佳答案
试试这个
[DllImport("zip4_w32.dll",
CallingConvention = CallingConvention.StdCall,
EntryPoint = "z4LLkGetKeySTD",
ExactSpelling = false)]
private extern static IntPtr z4LLkGetKeySTD();
然后,您可以使用 Marshal.PtrToStringAnsi() 将结果转换为字符串。您仍然需要使用适当的 Marshal.Free* 方法为 IntPtr 释放内存。