如何将const char*API导入C#?

Mik*_*ess 7 c# dllimport

鉴于此C API声明如何将其导入C#?

const char* _stdcall z4LLkGetKeySTD(void);
Run Code Online (Sandbox Code Playgroud)

我已经能够做到这一点:

   [DllImport("zip4_w32.dll",
       CallingConvention = CallingConvention.StdCall,
       EntryPoint = "z4LLkGetKeySTD",
       ExactSpelling = false)]
   private extern static const char* z4LLkGetKeySTD();
Run Code Online (Sandbox Code Playgroud)

Jar*_*Par 12

试试这个

   [DllImport("zip4_w32.dll",
       CallingConvention = CallingConvention.StdCall,
       EntryPoint = "z4LLkGetKeySTD",
       ExactSpelling = false)]
   private extern static IntPtr z4LLkGetKeySTD();
Run Code Online (Sandbox Code Playgroud)

然后,您可以使用Marshal.PtrToStringAnsi()将结果转换为String.您仍然需要使用适当的Marshal.Free*方法释放IntPtr的内存.