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

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

我在 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 块中执行此操作的信息。

尝试在 catch 块中使用 _resetstkoflw。

删除USES_CONVERSION

变化:MessageBox(A2T(ex.what()), _TEXT("Error"), MB_ICONERROR);

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

注意 MessageBoxA 末尾的额外 'A'。