在 UNICODE 应用程序的 catch 块内将 char * 转换为 CString
Posted
技术标签:
【中文标题】在 UNICODE 应用程序的 catch 块内将 char * 转换为 CString【英文标题】:Converting char * to CString inside a catch block in a UNICODE application 【发布时间】:2015-03-09 12:15:07 【问题描述】:我在 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 块中找不到任何信息。
【问题讨论】:
【参考方案1】:删除USES_CONVERSION
更改:MessageBox(A2T(ex.what()), _TEXT("Error"), MB_ICONERROR);
收件人:MessageBoxA(ex.what(), "Error", MB_ICONERROR);
注意MessageBoxA
末尾的额外“A”。
【讨论】:
我是这样使用的:MessageBoxA(NULL, ex.what(), "Error", MB_ICONERROR);【参考方案2】:尝试在 catch 块中使用 _resetstkoflw。
【讨论】:
请编辑您的答案,并解释这是如何解决问题的。以上是关于在 UNICODE 应用程序的 catch 块内将 char * 转换为 CString的主要内容,如果未能解决你的问题,请参考以下文章