Windows下Qt静态编译连接与DLL依赖问题解决.docVIP

Windows下Qt静态编译连接与DLL依赖问题解决.doc

  1. 1、本文档共24页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Windows下Qt静态编译连接和生成程序的 mingwm10.dll、 libgcc_s_dw2-1.dll依赖问题解决 本文编写和程序配置调试: HYPERLINK mailto:蔚蓝(winland0704@126.com 蔚蓝 (winland0704@126.com ) HYPERLINK /winland0704/home /winland0704/home 一、官方Qt 库-MinGW版本(Qt Creator)静态编译和DLL依赖解决 1、MinGW版本 (1)MinGW官方版本(gcc-4.5.2) 使用dwarf2异常处理,默认使用动态C运行时库,默认生成的程序依赖: libgcc_s_dw2-1.dll(105K) libstdc++-6.dll(860K) 使用参数 -static 可以解除对以上dll依赖。 现在新版MinGW生成的程序默认已经不依赖mingwm10.dll了。 TDM-GCC版本(Codelite和CodeBlocks带的,gcc-4.4.1) 使用sjlj异常处理,默认使用静态C运行时库,默认生成的程序独立运行,无dll依赖问题。 MinGW Distro - 最新版本(gcc 4.6.0) 使用dwarf2异常处理,默认使用静态C运行时库,无DLL依赖问题。 QP-GCC版本(gcc-4.4.5) 使用dwarf2异常处理,默认使用静态C运行时库,无DLL依赖问题。 PCX版本,包括32bit和64bit版本的MinGW(最新有gcc 4.6测试版) 与(4)差不多,无DLL依赖问题。 Qt库自带的MinGW(gcc-4.4.0) GCC配置信息: D:\Qt\2011qtgcc -v Using built-in specs. Target: mingw32 Configured with: ../gcc-4.4.0/configure --enable-languages=c,ada,c++,fortran,java,objc,obj-c++ --disable-sjlj-exceptions --enable-shared --enable-libgcj --enable-libgomp --with-dwarf2 --disable-win32-registry --enable-libstdcxx-debug --enable-version-specific-runtime-libs --prefix=/mingw --with-gmp=/mingw/src/gmp/root --with-mpfr=/mingw/src/mpfr/root --build=mingw32 Thread model: win32 gcc version 4.4.0 (GCC) Qt带的这个MinGW比较老,gcc-4.4.0版, 使用dwarf2异常处理,默认使用动态C运行时库。编写helloworld控制台程序,main.cpp #include iostream #include cstdio #include cstdlib using namespace std; int main(int argc, char **argv) { printf(Hello World!\n); coutHello World!\n ; system(PAUSE); return 0; } ①编译命令:g++ -o hello.exe main.cpp -mthreads 依赖DLL: mingwm10.dll (12KB) libgcc_s_dw2-1.dll(42KB) 生成的hello.exe有3.59MB。很大,莫名其妙。 ②编译命令:g++ -o hello.exe main.cpp 依赖DLL: libgcc_s_dw2-1.dll(42KB) 生成的hello.exe有3.58MB。 ③编译命令:g++ -o hello.exe main.cpp -static 依赖DLL:无。 生成的hello.exe有3.67MB。 ④编译命令:g++ -o hello.exe main.cpp -mthreads -static 依赖DLL: mingwm10.dll (12KB) 生成的hello.exe有3.68MB。 最后一个命令我们看到一个有意思的现象,Qt带的这个MinGW的gcc-4.4.0里压根没有mingwm10.dll对应的静态库版本,所以存在-mthreads参数时,不管怎么用-static参数,它总是需要动态库mingwm10.dll,这就是官方Qt让人纠结的地方。 只要使用它自带的MinGW,在-mthreads参数启用时,

文档评论(0)

f8r9t5c + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

版权声明书
用户编号:8000054077000003

1亿VIP精品文档

相关文档