【问题标题】:SDL_image.h won't load jpg / png files?SDL_image.h 不会加载 jpg / png 文件?
【发布时间】:2014-03-24 19:30:06
【问题描述】:

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

  1. 下载 libjpeg 源代码,然后下载标准的“configure;make;make install”
  2. 下载 SDL_image 源,标准 'configure;make;make install'

我对 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。

购买力平价。最后,我通过将我的 libpng16.so 重命名为 libpng12.so.0 并将该文件复制到 /lib/i386... 来实现它,其中 SDL_image 指的是 SDL_image。但是,此解决方案没有体面。我仍在寻找一种方法来告诉 SDL_image “嘿使用这个更新的 libpng!”

【问题讨论】:

    标签: sdl sdl-2


    【解决方案1】:

    您似乎没有使用正确的 lib 版本进行编译。尝试强制您的链接器在配置中采用正确的版本。

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

    这个答案也可以帮助CMake Finding Libraries on Wrong Path

    【讨论】:

    • 我去看看。我刚刚编辑了我的帖子,你会检查一下吗?非常感谢我的朋友!
    • 你的伎俩证实了这个问题。尝试清理缓存并重建。重命名库不应该是最好的解决方法。祝你好运;)
    • 你是对的。我调整了 SDL2_image 的配置文件,现在它就像一个魅力。再次感谢!
    猜你喜欢
    • 2013-01-30
    • 2019-08-25
    • 2012-08-19
    • 1970-01-01
    • 1970-01-01
    • 2022-01-05
    • 1970-01-01
    • 2014-12-19
    • 2021-07-05
    相关资源
    最近更新 更多