首页| 论坛| 消息

标题:Qt应用如何发布
作者:dduyoung
日期:2010-09-28 12:58
内容:

通常情况下,使用Qt开发应用都是采用动态编译的方式来进行发布,发布应用的时候就需要将相应的动态链接库文件一起发布了。应用依赖于哪些dll文件呢?一般来讲,有QtCore4.dll、QtGUI4.dll之类的了。但是,由于应用可能涉及到其它的模块,如网络模块等。可以查看一个.pro文件了解应用具体涉及到哪些模块。还有一个办法是,如果安装了VC6,则可以使用depends命令打开一个依赖查看工具,直接打开你的exe文件便可看到它所依赖的dll文件。复制出来即可,放在exe文件所在的目录即可。
另外还有一部分,是插件,这些插件是depends工具显示不出来的依赖关系,因为只有在应用运行的时候才会动态地去加载。这也是为什么很多跟我一样的新手会遇到“找不到数据库驱动”,“乱码”等问题的原因。
在Qt的安装目录中有一个plugins的目录,这个目录放着一些常用的插件,有数据库驱动、文字编码插件、图像解析等方面的,也基本上一个完整应用所必需的——因为你总会在应用中使用数据库,中文,使用图片等(尽管不是一定有这些操作)。发布应用时,你需要把你使用到的插件带上,你会把plugins目录下的一些dll文件直接复制出来,与exe文件放在一起,或者在再新建一个plugins目录用于放置插件文件。在应用中使用QApplication::addLibraryPath(“./”)或者QApplication::addLibraryPath(“./plugins”)。但还是解决不了找不到插件的问题。
根据官方的说明:
假设你的应用app.exe位于appdir目录,如下:
+appdir
-app.exe
那么,appdir目录其实就等同于plugins目录。也就是说,当你应用运行的时候,它会在appdir目录下面找qt的插件。但是,Qt的插件是按不同的目录放置的,当你从Qt的安装文件目录下复制插件时,还需要创建相应的目录结构。如下,使用数据库插件:
+appdir
-app.exe
+sqldrivers
-qsqlite4.dll
现在即便不使用QApplication::addLibraryPath(“./”),也可以找到数据库驱动了。
或者使用QApplication::addLibraryPath(“./plugins”),将目录结构建成如下的样子,也是可以的:
+appdir
-ap ..


#1 [XChinux 10-21 21:12]
在文档中提到的几种方法中,qt.conf感觉比较不错, 呵呵。再把qt.conf放到资源文件里。

回复 发表
主题 版块