全部博文(584)
分类: C/C++
2011-04-10 15:19:20
根据网上的资料,发布static版已经成功了,由于我用的的一个dll文件依然依赖qt的核心dll文件,所以编译成static还是需要把qt的几个 dll文件打包进去,deploy static版本没啥意义了。今天尝试发布动态链接库版的,结果遇到了了问题。
程序运行目录下建立了imageformats 和codecs目录,并把相关的plugin dll文件拷贝进去,程序运行依然没法显示jpg图片,中文乱码,显然plugin没起作用,搜遍网络和qt助手,也没能把问题解决。使用了 /QCoreApplication::addLibraryPath(QCoreApplication::applicationDirPath()+" /plugins");也不见效。
按照qt助手推荐的Dependency Walker工具查看我的exe文件依赖的dll,没发现问题。使用360safe的进程查看器发现,exe文件还依赖于libgcc_s_dw2-1.dll,从qt的bin目录下把这个文件拷贝过来,程序运行正常了。
我推测,Qt4.6.0的plugin需要这个dll文件启动。
类似的资料哪里去查呢?
qt自带的Mingw中gcc编译器使用的共享方式编译的,--enable-shared,所以任何使用此编译器编译器编译出来的程序都要加上这个库。可以自已重新编译一个gcc编译器。配置为 ../../src/gcc-4.4.3/configure --prefix=/mingw --enable-languages=c,c++,objc,obj- c++ --disable-sjlj-exceptions --disable-shared --enable-libgcj --enable-libgomp - -with-dwarf2 --disable-win32-registry --enable-libstdcxx-debug --enable-version- specific-runtime-libs --build=mingw32 --with-pkgversion='MinGW 4.4.3'