C++函数定义是这样的
__declspec(dllexport) LPWSTR __stdcall GetErrorString(int errCode);
Run Code Online (Sandbox Code Playgroud)
我在 C# 中这样称呼它
[DllImport("DLLTest.dll")]
public static extern string GetErrorString(int errCode);
static void Main(string[] args)
{
string result = GetErrorString(5);
}
Run Code Online (Sandbox Code Playgroud)
我收到 System.Runtime.InteropServices.SEHException 类型的未处理异常
我什至不确定 C++ DLL 是否可以尝试将 LPWSTR 返回到 C#...
谢谢。
您可能想尝试这样的事情:
[DllImport("DLLTest.dll", CharSet = CharSet.Unicode)]
[return: MarshalAs(UnmanagedType.LPWStr)]
public static extern string GetErrorString(int errCode);
Run Code Online (Sandbox Code Playgroud)