Qt利用了很多第三方库来进行图像编码,压缩,加密,音频和视频编解码器支持等等。
从历史上看,当我想利用它们时,我总是不得不将它们作为附加依赖项包括在内。我一直想知道是否有一种方法可以简单地重用Qt已经包含的二进制文件?
答案 0 :(得分:2)
这确实取决于库,但总的来说,这是不可能的。
Qt静态地构建和链接大多数第三方库,而不会导出任何符号(请参见libpng作为示例)。有些甚至只链接到插件中,而不链接到Qt库中(例如sqlite,它只是由插件导入的pri文件)。找出具体情况的唯一方法是检查不同Qt存储库中的src/3rdparty
子文件夹。
还有另外一点需要考虑:Qt经常尝试通过使用操作系统提供的功能来满足依赖关系。即如果Qt在主机系统上找到libpng,它通常会链接到该库,因此该代码甚至不再是Qt二进制文件的一部分,即使将符号导出到一个具体的库,编译时链接也取决于Qt配置。 / p>
唯一的例外是静态链接Qt。在这种情况下,链接器仅在链接最终应用程序后才拉入所有这些3rdparty依赖项,从而使您可以链接到Qt使用的库。