静态链接后,资源中的qt png已损坏

时间:2012-09-14 08:28:37

标签: qt qt4

我们正在linux上开发一个相当大的基于Qt的项目,我们已经达到最终的RC1阶段。

现在,我们遇到了一些非常奇怪的事情:为了投入生产,我们在静态链接库列表中添加了另一个.a库。

库已链接且应用程序正在运行,但资源文件中的每个.png都已损坏,这是启动时的输出:

libpng错误:IHDR:CRC错误

似乎libpng无法处理那些无效的png(当然)。文件在那里,大小合适,在静态链接最终库后,它们只是变成空白。图书馆本身并没有在任何地方使用,它只是链接。

以前有没有遇到过这样的情况?有一个已知的解决方法吗?我们在QtCreator 2.3.0上使用Qt 4.7.4 x64,我们现在不想升级,但它是目前我们想到的唯一选择。

1 个答案:

答案 0 :(得分:4)

它符合符号的问题。 静态库和libpng可以同时链接到其他库,当在编译/加载时链接或解析时,会发生一些奇怪的事情。

您可以使用 objdump 命令检查符号(objdump -tT / usr / bin)

您是否尝试在编译/链接时修改库顺序?我的意思是,例如,

gcc -lmylibrary -lQt -lOtherLOLibrary 

而不是

gcc -lOtherLOLibrary -lQt -lmylibrary

我认为我错过了一些东西,为什么要链接到一个未使用的库?