c# - 是否可以将 LPWSTR 从 C++ DLL 返回到 C# 应用程序

标签 c# dll interop

C++函数定义是这样的

__declspec(dllexport) LPWSTR __stdcall GetErrorString(int errCode);

我在 C# 中这样调用它

 [DllImport("DLLTest.dll")]
 public static extern string GetErrorString(int errCode);

 static void Main(string[] args)
{
    string result = GetErrorString(5);
}

我收到 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);

关于c# - 是否可以将 LPWSTR 从 C++ DLL 返回到 C# 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9516263/

相关文章:

c++ - 使用 ffmpeg.dll 或 avcodec.dll 将视频文件转换为 TIFF? "on-the-fly"可能吗?

java - 将 java 和 clojure 文件混合在一个包中

asp.net-mvc - ASP.NET MVC 应用程序中的 "Bad binary signature"

c# - 带有 HtmlAgilityPack 的 HTML Linq,或 P​​CL 中的替代方案

javascript - 如何在 asp.net 中的页面回发后保持页面滚动位置

c# - 在 mysql 和 gridview 中按年份和日期排序

c++ - DLL 中的 SetDllDirectory LoadLibrary

c# - DataGrid不会立即更新

java - 如何构建 JNI .dll?

.net - .NET 事件、线程和 COM 上下文如何协同工作?