SDL_image.h不会加载jpg / png文件?

时间:2014-02-23 07:59:30

标签: sdl sdl-2

我在Linux下使用SDL2及其扩展库。以下是我为构建SDL_image lib所采取的步骤:

  1. 下载libjpeg源代码,然后标准'configure; make; make install'
  2. 下载SDL_image源,标准'configure; make; make install'
  3. 我为libpng做了同样的事情所以我将省略这里的步骤。

    当我分别尝试加载jpg文件和png文件时,我收到以下错误消息:(忽略我自己添加的前缀。后一部分来自SDL_GetError)

    SDL_CTexture::load error: JPEG loading error
    SDL_CRenderer:copy error: Invalid texture
    

    表示png:

    SDL_CTexture::load error: Failed loading png_set_longjmp_fn: /lib/i386-linux-gnu/libpng12.so.0: undefined symbol: _png_set_longjmp_fn
    SDL_CRenderer:copy error: Invalid texture
    

    顺便说一下,当我尝试构建libpng时,'make check'给出了很长的失败列表。但我事先为libpng安装了zlib。

    有什么想法吗?


    PS。从构建SDL_image时运行'./configure'的输出开始,它对libpng和libjpeg都说'是'。

    PPS。好了,现在我发现SDL_image已经链接到/lib/i386-linux-gnu/libpng12.so,但我新建的libpng安装在/ usr / local / lib中。如何告诉SDL_image链接到较新版本?我尝试将较新的libs(libpng16.so)复制到/ lib / i386-linux-gnu,但它仍然指的是旧的libpnf12.so。

    PPPS。最后我通过将libpng16.so重命名为libpng12.so.0并将此文件复制到/ lib / i386 ...(SDL_image所指的位置)来实现它。然而,这个解决方案没有正派。我仍在寻找一种告诉SDL_image“嘿使用这个新的libpng!”的方法。

1 个答案:

答案 0 :(得分:1)

似乎你没有使用正确的lib版本进行编译。尝试强制链接器在configure中选择正确的版本。

看看qa部分http://www.willusher.io/sdl2%20tutorials/2013/08/18/lesson-3-sdl-extension-libraries/,一个人和你有同样的问题。

这个答案也有助于CMake Finding Libraries on Wrong Path