我在Linux下使用SDL2及其扩展库。以下是我为构建SDL_image lib所采取的步骤:
我为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!”的方法。
答案 0 :(得分:1)
似乎你没有使用正确的lib版本进行编译。尝试强制链接器在configure中选择正确的版本。
看看qa部分http://www.willusher.io/sdl2%20tutorials/2013/08/18/lesson-3-sdl-extension-libraries/,一个人和你有同样的问题。