【发布时间】:2013-12-16 12:02:12
【问题描述】:
我正在使用一个非托管 DLL,其函数会抛出 std::exception。
我正在使用 .NET DLL 包装器,因此可以分发它以在 .NET 程序中使用。
我希望能够从本机异常中捕获消息,但我得到的只是System.Runtime.InteropServices.SEHException("External component has thrown an exception.")
有没有办法传播异常细节?也许我应该从本机 DLL 导出自定义异常?我该怎么做?
谢谢
本机 DLL:
__declspec(dllexport) void __stdcall W32DLLFunc(int param) {
if (param < 0) {
throw new exception("Error: param must be > 0");
}
...
}
.net DLL:
[DllImport("nw32.dll", CharSet = CharSet::Auto)]
static void W32DLLFunc(int param);
vb.net 程序:
Try
W32DLLFunc(-1)
Catch ex As Exception
MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error)
End Try
【问题讨论】:
标签: c++ .net vb.net winapi dll