【VC报错】LeaveCriticalSection中断异常

这两天,接手别人的一个VC程序,要求在中文,英文,繁体系统下都能正常运行,并且在不同系统下显示不同的语言。

最近就遇到一个很棘手的问题,和之前在英文系统下的差不多,只是这次更离谱,上次是英文系统下的默认编码导致取中文首拼错误;

现在是在繁体系统下,开启工具就会中断异常,报堆栈不平衡,DLL所致。


经多次跟踪,找到时 LeaveCriticalSection 函数这里,跳出的异常中断。

此处的代码,大致为下面这种形式(下面为转载的):

用LCMapString实现GB2312繁体到简体的转化
char szText [256] = "" ;
WORD wLanguageID = MAKELANGID(LANG_CHINESE,SUBLANG_CHINESE_SIMPLIFIED) ;
LCID Locale = MAKELCID( wLanguageID, SORT_CHINESE_PRC ) ;
LCMapString( Locale, LCMAP_SIMPLIFIED_CHINESE, "測試", -1, szText, 256 ) ;


后来找了很多地方,有网上的资料说是要设置多线程编译:

project->settings,选择C/C++,CateGory选择Code Generation,下面的Use run-time library选择多线程,再编译运行试试看。

还是不行。


后来,发现,还是繁体系统下的编码和我中文的操作系统大不一样所致。

于是我把项目丢到繁体操作系统下进行编译,并修改常数参量(很重要),即可正常在中文,英文,繁体三种操作系统下正常运行了。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值