在 UNICODE 应用程序中将 char * 转换为 catch 块内的 CString

Converting char * to CString inside a catch block in a UNICODE application

本文关键字:catch CString 转换 应用程序 UNICODE char      更新时间:2023-10-16

我在MFC应用程序中有以下代码:

catch(cv::Exception &ex)
    {
        USES_CONVERSION;
        MessageBox(A2T(ex.what()), _TEXT("Error"), MB_ICONERROR);
    }

但是我收到此错误:

error C3204: '_alloca' cannot be called from within a catch block   

如何修复此错误?

将 const char * 转换为 CString 的原始解决方案来自我在互联网上的搜索,但我找不到任何如何在 catch 块中执行此操作的信息。

删除USES_CONVERSION

更改: MessageBox(A2T(ex.what()), _TEXT("Error"), MB_ICONERROR);

收件人: MessageBoxA(ex.what(), "Error", MB_ICONERROR);

请注意MessageBoxA末尾的额外"A"。

尝试在 catch 块中使用 _resetstkoflw。