使用 C#.net,我如何在 .dll 文件中声明和使用此函数:
DEMO_API Boolean DEMO_CALL GetVersion(Char* versionBuffer,
UInt16* versionLengthBuffer);
提前致谢!
C# 本身没有字符串指针的概念,您可以只使用字符串/int。
基本上要定义你自己的,你必须做一些稍微不同的事情,但它不会兼容。
public bool GetVersion (string versionBuffer, int versionLengthBuffer)
如果您使用现有项目,请查看pInvoke以获取可能的签名列表。
这是我找到的解决方案:
[DllImport("DEMO.dll",
SetLastError = true,
CallingConvention = CallingConvention.Cdecl)]
public extern static byte GetVersion(
[MarshalAs(UnmanagedType.LPStr)] StringBuilder versionBuffer,
[MarshalAs(UnmanagedType.LPWStr)] StringBuilder versionLengthBuffer);