如何将qt静态库代码还原动态库

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何将qt静态库代码还原动态库相关的知识,希望对你有一定的参考价值。

将qt静态库代码还原动态库的方法:
1、Qt Creator可以自动扫描到系统中存在的Qt库版本;
2、如果扫描不到,可以通过Creator的 Tool->Options->Qt4中添加静态库的路径;
3、可以手动指定INCLUDE和LIB的位置;
4、可以在pro文件中指定CONFIG += shared,而且,要记得在Project中选择相应的版本。
参考技术A   通常不需要在系统变量中加入Qt库的位置的。Qt Creator可以自动扫描到系统中存在的Qt库版本,如果扫描不到,可以通过Creator的 Tool->Options->Qt4中添加静态库的路径。而QDevelop虽然没有那么智能,但是可以手动指定INCLUDE和LIB的位置。或许,这根本就不是一个问题。如果怀念动态库,或者在产品发布之前并不想体验静态编译那种蜗牛爬一般的速度,可以在pro文件中指定CONFIG += shared,而且,要记得在Project中选择相应的版本。

关于Qt程序中动态和静态的几点总结

  • 在Qt程序中,分动态库版本的Qt和静态库版本的Qt。
  • 官方默认提供的二进制包就是动态库版本的Qt,如果自行编译则编译的时候对应参数 -shared。
  • 静态库版本的Qt需要自行编译,编译的时候对应参数 -static,(理论上无论商业非商业使用Qt静态库需要收费,因为静态编译后都看不到Qt的相关库文件)。
  • 使用动态库的Qt支持编译生成动态库和静态库(CONFIG += staticlib)的程序。
  • 使用动态库的Qt程序支持动态库的引用(引用的时候 LIB += ,运行的时候需要动态库文件比如 .dll .so 文件支持)。
  • 使用动态库的Qt程序支持静态库的引用(引用的时候 LIB += ,运行的时候无需库文件支持,可以理解为该文件已经和可执行文件合二为一,缺点是可执行文件体积变大)。
  • 通过生成文件的个数和大小可以发现,静态库相当于把运行时需要的文件也一并合并到一个文件了,而动态库是拆分成两个文件,一个用于编译,一个用于运行。
  • 上述动态库的规则也通用于静态库。
  • 此规则应该是通用于其他语言框架。
  • 很多人有个误区包括几年前的我,以为要用Qt编写静态库就必须用静态的Qt库,其实动态库的Qt也可以编写静态的库,只是该库不会生成动态库文件。
  • 如果要将Qt程序编译成静态的可执行文件(单个文件无依赖),前提是所用的Qt库必须静态的。

以上是关于如何将qt静态库代码还原动态库的主要内容,如果未能解决你的问题,请参考以下文章

如何编译C/Fortran动态/静态链接库

Qt 中如何使用动态库.so文件或者静态库.a文件

QT静态库静态编译

Qt 共享库(动态链接库)和静态链接库的创建及调用

关于Qt程序中动态和静态的几点总结

Qt动态连接库/静态连接库创建与使用,QLibrary动态加载库