【问题标题】:Linking with libpng in Qt在 Qt 中与 libpng 链接
【发布时间】:2012-02-19 08:35:00
【问题描述】:

我正在尝试编译一个同时使用 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 文件?
  • 我正在寻找合适的 QImage 替换为: png::image renderImage(renderFile.toAscii());有什么想法吗?
  • 您找到解决方案了吗?

标签: qt qt-creator libpng


【解决方案1】:

所以,真的没有理由这样做,Qt 已经附带了 qpng。 QImage 会读取和写入它们。

【讨论】:

  • 我的项目有png::image< png::rgba_pixel_16 > renderImage(renderFile.toAscii());,所以现在它需要libpng,否则我得到一个error: 'png' has not been declared,也许你知道另一种选择。
  • QImage 没有暴露 libpng 的所有功能。
【解决方案2】:

当你构建Qt时,QtGui是用libpng编译的,它是libQtGui.so中的静态链接

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

在 src/gui/ 你 make 和 make install,libQtGui.so 应该在你的 lib 中。

【讨论】:

    猜你喜欢
    • 2011-04-18
    • 2012-09-19
    • 2011-01-24
    • 2011-05-02
    • 2011-02-19
    • 2015-01-09
    • 2023-01-14
    • 2011-02-26
    • 2017-12-18
    相关资源
    最近更新 更多