• 1153阅读
  • 2回复

关于Qt程序中动态和静态的几点总结 [复制链接]

上一主题 下一主题
离线liudianwu
 

只看楼主 倒序阅读 楼主  发表于: 2022-03-02

- 在Qt程序中,分动态库版本的Qt和静态库版本的Qt。
- 官方默认提供的二进制包就是动态库版本的Qt,如果自行编译则编译的时候对应参数 -shared。
- 静态库版本的Qt需要自行编译,编译的时候对应参数 -static,(理论上无论商业非商业使用Qt静态库需要收费,因为静态编译后都看不到Qt的相关库文件)。
- 使用动态库的Qt支持编译生成动态库和静态库(CONFIG += staticlib)的程序。
- 使用动态库的Qt程序支持动态库的引用(引用的时候 LIB += ,运行的时候需要动态库文件比如 .dll .so 文件支持)。
- 使用动态库的Qt程序支持静态库的引用(引用的时候 LIB += ,运行的时候无需库文件支持,可以理解为该文件已经和可执行文件合二为一,缺点是可执行文件体积变大)。
- 通过生成文件的个数和大小可以发现,静态库相当于把运行时需要的文件也一并合并到一个文件了,而动态库是拆分成两个文件,一个用于编译,一个用于运行。
- 上述动态库的规则也通用于静态库。
- 此规则应该是通用于其他语言框架。
- 很多人有个误区包括几年前的我,以为要用Qt编写静态库就必须用静态的Qt库,其实动态库的Qt也可以编写静态的库,只是该库不会生成动态库文件。
- 如果要将Qt程序编译成静态的可执行文件(单个文件无依赖),前提是所用的Qt库必须静态的。
5条评分好评度+1贡献值+1金钱+11威望+1
qihao777 金钱 +1 - 2023-04-25
20091001753 好评度 +1 - 2022-03-03
20091001753 贡献值 +1 - 2022-03-03
20091001753 威望 +1 - 2022-03-03
20091001753 金钱 +10 - 2022-03-03
欢迎关注微信公众号:Qt实战/Qt入门和进阶(各种开源作品、经验整理、项目实战技巧,专注Qt/C++软件开发,视频监控、物联网、工业控制、嵌入式软件、国产化系统应用软件开发) QQ:517216493  WX:feiyangqingyun  QQ群:751439350
离线fsu0413

只看该作者 1楼 发表于: 2022-03-02
如果用动态库的Qt编译使用Qt的静态库,那么这个静态库只能用动态库的Qt
实际上静态库只是把代码编译了,然后打包放在一起了而已。。。。
离线liudianwu

只看该作者 2楼 发表于: 2022-03-03
回 fsu0413 的帖子
fsu0413:如果用动态库的Qt编译使用Qt的静态库,那么这个静态库只能用动态库的Qt
实际上静态库只是把代码编译了,然后打包放在一起了而已。。。。 (2022-03-02 20:27) 

是的
欢迎关注微信公众号:Qt实战/Qt入门和进阶(各种开源作品、经验整理、项目实战技巧,专注Qt/C++软件开发,视频监控、物联网、工业控制、嵌入式软件、国产化系统应用软件开发) QQ:517216493  WX:feiyangqingyun  QQ群:751439350
快速回复
限100 字节
 
上一个 下一个