vc6.0的程序,迁移到了vs2008,编译没有问题,但是在debug模式下,运行会报错,release模式下没问题。然后就问万能的谷哥和度娘,查找了很多文章,不过大部分都是互相抄来抄去,我结合两篇文章的指导,排除了这个问题,贴出来备查。
这个问题是资源引起的问题,据说是由于建立工程时选择了其他语言,后来又修改成中文,所以会有这个问题。我的工程里面查看了一下,有中文,英文,还有莫名奇妙的意大利文。我新建了一个中文的工程,然后对照两者的不同,进行修改。
#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_CHS)
#ifdef _WIN32
LANGUAGE 4, 2
#pragma code_page(936)
#endif //_WIN32
查找AFX_RESOURCE_DLL,大概会发现4-5处内容,然后注意红色字的部分,其他的地方格式不太一样,但是修改的内容是一样的
LANGUAGE 4, 2也可以写成LANGUAGE LANG_CHINESE, SUBLANG_CHINESE_SIMPLIFIED
如果用宏,看起来会比较直观,不过vs2008里面,默认用的是数字。
这样修改完以后,发现问题依旧,继续搜索
#include "res\XXX.rc2" // 非 Microsoft Visual C++ 编辑的资源
是这里出问题了,由于包含的顺序问题,导致语言的问题,具体的我也说不清,详情可查看参考文章
#include "res\XXX.rc2" // 非 Microsoft Visual C++ 编辑的资源 #include "afxres.rc" // 标准组件 #include "afxprint.rc" // 打印/打印预览资源
改成
#include "afxres.rc" // 标准组件 #include "afxprint.rc" // 打印/打印预览资源 #include "res\XXX.rc2" // 非 Microsoft Visual C++ 编辑的资源
就可以了,其实就是调整了一下顺序,到此,问题解决
参考文章:http://www.wuroom.com/post/116/
http://www.codelast.com/?p=1888