在Qt中与libpng链接

4

我正在尝试编译一个使用Qt框架和libpng的项目。之前版本的libpng出现错误,因此我下载了更新的代码库,但是在构建项目时出现以下错误:

Running build steps for project mytool-win-cli...
Configuration unchanged, skipping qmake step.
Starting: "C:\QtSDK\mingw\bin\mingw32-make.exe" 
C:/QtSDK/mingw/bin/mingw32-make -f Makefile.Debug
mingw32-make[1]: Entering directory `C:/_src/mytool-win-cli-build-desktop-Qt_4_7_4_for_Desktop_-_MinGW_4_4__Qt_SDK__Debug'
g++ -mthreads -Wl,-subsystem,windows -o debug\mytool-win-cli.exe debug/main.o  -L"c:\QtSDK\Desktop\Qt\4.7.4\mingw\lib" -lmingw32 -lqtmaind -lpng -lQtGuid4 -lQtCored4 -LC:\OpenSSL-Win32_full\lib 
c:/qtsdk/mingw/bin/../lib/gcc/mingw32/4.4.0/../../../libpng.a(libpng14_la-pngread.o): In function `png_create_read_struct_2':
/usr/src/packages/libpng/14/libpng-1.4.8-1/src/libpng-1.4.8/pngread.c:90: undefined reference to `setjmp'
c:/qtsdk/mingw/bin/../lib/gcc/mingw32/4.4.0/../../../libpng.a(libpng14_la-pngerror.o): In function `png_default_warning':
/usr/src/packages/libpng/14/libpng-1.4.8-1/src/libpng-1.4.8/pngerror.c:361: undefined reference to `__getreent'
/usr/src/packages/libpng/14/libpng-1.4.8-1/src/libpng-1.4.8/pngerror.c:362: undefined reference to `__getreent'
c:/qtsdk/mingw/bin/../lib/gcc/mingw32/4.4.0/../../../libpng.a(libpng14_la-pngerror.o): In function `png_default_error':
/usr/src/packages/libpng/14/libpng-1.4.8-1/src/libpng-1.4.8/pngerror.c:297: undefined reference to `__getreent'
/usr/src/packages/libpng/14/libpng-1.4.8-1/src/libpng-1.4.8/pngerror.c:298: undefined reference to `__getreent'
/usr/src/packages/libpng/14/libpng-1.4.8-1/src/libpng-1.4.8/pngerror.c:297: undefined reference to `__getreent'
c:/qtsdk/mingw/bin/../lib/gcc/mingw32/4.4.0/../../../libpng.a(libpng14_la-pngerror.o):/usr/src/packages/libpng/14/libpng-1.4.8-1/src/libpng-1.4.8/pngerror.c:298: more undefined references to `__getreent' follow
collect2: ld returned 1 exit status
mingw32-make[1]: Leaving directory `C:/_src/mytool-win-cli-build-desktop-Qt_4_7_4_for_Desktop_-_MinGW_4_4__Qt_SDK__Debug'
mingw32-make[1]: *** [debug\mytool-win-cli.exe] Error 1
mingw32-make: *** [debug] Error 2
The process "C:\QtSDK\mingw\bin\mingw32-make.exe" exited with code 2.
Error while building project mytool-win-cli (target: Desktop)
When executing build step 'Make'

我怀疑在包含的libpng源代码和mingw编译的版本之间存在问题,但我无法确定。我做错了什么吗?


为什么不直接使用 QImage 来读取你的 PNG 文件呢? - Samuel Harmer
我正在寻找一个合适的QImage替代方案来替换以下代码: png::image< png::rgba_pixel_16 > renderImage(renderFile.toAscii());有什么建议吗? - Meetai.com
你有没有找到解决方案? - Troyseph
2个回答

2

所以,真的没有必要这样做,因为Qt已经附带了qpng。QImage既可以读取也可以写入它们。


1
我的项目有png::image< png::rgba_pixel_16 > renderImage(renderFile.toAscii());,因此现在需要libpng,否则会出现error: 'png' has not been declared的错误,也许你知道其他替代方案。 - Meetai.com
QImage并没有暴露libpng的所有功能。 - Dom

0

当您构建Qt时,QtGui会使用libpng进行编译,并且在libQtGui.so中进行静态链接。

我认为您不必再次链接libpng。

在src/gui/中进行make和make install后,libQtGui.so应该位于您的lib目录中。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接