标题:发布的qt程序拷贝到其它机器无法读取plugin
作者:bfdream
日期:2007-04-05 20:48
内容:
VS2005sp1+Qt4.2.3
release出来的程序拷贝到没有qt的机器,将QtCore4.dll、QtGui4.dll和qjpeg1.dll等plugin都一起拷贝过去了
程序运行没有问题,但是无法读取qjpeg的plugin,因此最后得到的程序无法处理jpeg图像
将qjpeg1.dll放在以下四种情况的目录下:
1、和应用程序相同目录下
2、应用程序的plugins子目录
3、应用程序的imageformats子目录
4、应用程序的plugins\imageformats子目录
这四种都无法加载qjepg插件。
最后我只能又编译了一份完全静态的qt库,将qt库和插件都编译进去,才能够发布这个程序
请问大家碰到过类似问题吗?怎么解决的,谢谢
#1 [XChinux 04-05 22:05]
http://www.qtcn.org/bbs/read.php?tid=5255
#2 [bfdream 04-06 16:17]
按照这个上面说的还是没有用,我还特意在程序启动的时候显示了libraryPath,里面都有我加上的那些目录,但是就是没用
不过最奇怪的是我把我机器上安装的Qt目录改名之后,我的程序能运行,说明copy出来的那些东西是起作用的
只是不知道为什么一到别人的机器上就不行了,难道还有什么检查机制不成?
另外,请问在动态链接库的情况之下,能够单独静态链接所需的plugins吗?按照帮助里面说的好像可以,但是我却每次链接都会出现符号错误,也不知道怎么回事,我现在唯一的解决办法就是所有的Qt库都是静态链接发布一个巨大的程序。
#3 [bfdream 04-13 22:31]
今天偶然发现了问题的原因,似乎是MSVC2005sp1引起的,
我试了一下朋友编译的qt版本(他的没有sp1),发现可以自动加载plugins
只要把plugins放到相应的目录下,例如imageformats什么的就可以的
什么设置都不需要,但是我的用sp1编译的死活不能拷贝到其它人的机器上运行
希望其它装过sp1的同好有时间试一试,是否一定是这样的,还是需要额外设置
现在郁闷的是sp1还不能卸载,呵呵
#4 [XChinux 04-14 13:11]
关注准。。。
我一直用的mingw,都能行的。
#5 [qoozone1234 04-14 13:33]
呵呵,我打了sp1以后,我原来写的程序都编译不过去。
后来卸载vs2005,重新安装,一切又可以了