我有一个项目,它包含一个调用几个 C++/CLI DLL 的 C# 应用程序。如果我在本机代码中有 Visual Studio C 运行时库致命错误,似乎无法捕捉到它。
举一个简单的例子,如果我把它放在本机代码中:
wchar_t buf[1]; ::wcscpy_s(buf, 1, L"ab");
该应用程序将崩溃(在发布版本中)。它不会抛出异常,我无法用 __try...__except 捕获它。
我想捕捉这些类型的错误,这样我就可以显示一个很好的错误对话框,最好是使用调用堆栈。我愿意创建一个小型转储,但我尝试通过在其中一个 C++/CLI DLL 中调用 ::SetUnhandledExceptionFilter() 来创建一个小型转储,但这似乎也不起作用。
有什么方法可以优雅地处理 .NET 应用程序中的 C 运行时库致命错误?