【发布时间】:2014-03-24 19:30:06
【问题描述】:
我在 Linux 下使用 SDL2 及其扩展库。以下是我构建 SDL_image 库的步骤:
- 下载 libjpeg 源代码,然后下载标准的“configure;make;make install”
- 下载 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!”
【问题讨论】: