【开源中国 APP 全新上线】“动弹” 回归、集成大模型对话、畅读技术报告”
用 QT Creator 写了一个最简单的 Hello world 小程序。
使用 Release 模式编译后,release 的目录下包含 Hello1.exe 可执行程序。
如果我们需要发布这个程序,那么还需要 QT 的运行库,包括哪些呢?
拿一台干净的机器一个个试,终于把这些 Qt 库给找出来,成功运行
- QtCore4.dll
- QtGui4.dll
- mingwm10.dll
- libgcc_s_dw2-1.dll
其中要特别注意的是,这些文件应该从 Qt 安装目录下的 [QT安装目录]\qt\bin 子目录中获取,因为[QT安装目录]\bin 也有同样的文件,但是无效。
这里仅限 Windows 系统,其他非 Windows 系统尚未研究。
不过也碰到一个小问题, Hello1 程序中有这么一行代码:
QString gbk_msg = codec->toUnicode("你确认要退出 Hello Qt 程序吗?");
这段代码在 Windows 7 下没问题,但是 XP 下执行到这行代码就会报程序异常退出。
Qt的转编码有套自己的规则,比如:
在全局指定软件本地的字符编码(有个函数的,具体忘记了,要查查)
new QLabel(QApplication.instance.tr("中文字"));
他会自动根据你的字符编码输出,这点比较智能话。
=======================================================
补充:我记得是:
QTextCodec::setCodecForLocale(QTextCodec::codecForName("GB2312"));
因为现在不在家,所以一下子没法查到代码。
红薯啥也涉猎啊。怎么有这么多精力呢?很好奇。
引用来自#3楼“Javier”的帖子
红薯啥也涉猎啊。怎么有这么多精力呢?很好奇。
有危机感啊,老了,跟不上年轻人的步伐了。
桌面应用开发已经丢了好几年了,觉得 Qt 挺有意思的,就抽空学一下。
哈哈,乱码问题解决了:
QTextCodec::setCodecForTr(QTextCodec::codecForLocale());
QString gbk_msg = tr("你确认要退出 Hello Qt 程序吗?");
我也觉得java不能服务我一生了,在了解c++中
libgcc_s_dw2-1.dll说明Qt库是用gcc shared版本编译的,用static版本自行编译的就无此文件
mingwm10.dll是mingw的windows run time
红薯是高手啊,希望多分享些经验供我这样的新手学习,先在此感谢了
用到不同的类,需要的DLL也不同.LZ列的几个基本都是必须的
可以用dependency walker查看exe依赖的动态链接库:http://www.dependencywalker.com/
QT4出来的文件是超大的~~~~~~一个库近10M~~~天~~~~