vs2008+qt4.6.2程序移植

将vs2008+qt4.6.2编译的程序放到没安装过vs2008和QT的XP机器上运行,遇到的问题。

1.vs2008需要一些库,在XP上没有这些库文件;

安装vcredist_x86.exe,拷贝安装过vs2008机器的C:\WINDOWS\WinSxS目录等方法,待总结。

2.QT4中文显示问题;

中文显示问题的解决:

首先编译的时候本机中文显示不了,需要加一段代码,设置QT的解码方法,代码如下:

QTextCodec *codec = QTextCodec::codecForName("GB2312");
	QTextCodec::setCodecForLocale(codec);
	QTextCodec::setCodecForCStrings(codec);
	QTextCodec::setCodecForTr(codec);


或者设置编码方式为GBK,这样在本机就可以显示中文了。

如果一直到未安装过QT的机器上,还需要拷贝GBK或GB2312的库文件,这些库在“C:\Qt\4.6.2\plugins\codecs”下,添加一句代码如下(添加解码的库文件路径):

QApplication::addLibraryPath(".\\plugins");



添加这句代码之后,将\plugins目录拷贝到编译的程序的运行目录下,这样程序就能正确加载该字体库了。

是否正确加载了字体库的测试代码:

QApplication a(argc, argv);
	QApplication::addLibraryPath(".\\plugins"); 

	QTextCodec *codec = QTextCodec::codecForName("GB2312");
	QMessageBox::information( 0, "codec", QString::number((int)codec) );
	QTextCodec::setCodecForLocale(codec);
	QTextCodec::setCodecForCStrings(codec);
	QTextCodec::setCodecForTr(codec);


如果messagebox弹出 “0”则表示加载字体库失败,非0则表示加载字体库成功。


3.VS2008预编译选项设置,在“通用配置——C/C++——预编译头”处进行设置,可以设置VS2008是否使用预编译头,昨天这个问题百度了2个多小时也没发现,哎,要认真、要仔细啊。


4.runtime Error问题。移植VC6的程序到VS2008,修改了程序的生成目录和工作目录,未修改生成数据库文件(pdb文件的路径)产生错误如下:

R6034
An application has made an attempt to load the C runtime library incorrectly.
Please contact the application's support team for more information
1.运用上述方法修改后,仍然不好用,继续google,发现在链接选项中忽略“msvcrt.lib”可以解决。
2.修改编译选项,将/MD或/MDd 改为 /MT或/MTd,这样就实现了对VC运行时库的静态链接,在运行时就不再需要VC的dll了。
此问题是vs2008的manifest的问题。参考
1.http://www.cppblog.com/deercoder/articles/101006.html
2.http://dearymz.blog.163.com/blog/static/2056574201101410252111/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值