2014-02-23 69 views
2

我在Linux下使用SDL2及其擴展庫。下面是我建SDL_image LIB步驟:SDL_image.h不會加載jpg/png文件?

  1. 下載libjpeg的來源,那麼標準的「配置;作出;使安裝」
  2. 下載SDL_image源,標準的「配置;作出;使安裝」

我對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'給出了一長串失敗。但是我事先安裝了liblng的zlib。

任何想法?


PS。從構建SDL_image時運行'./configure'的輸出,它對libpng和libjpeg都表示'yes'。

PPS。好了,現在我發現SDL_image已經鏈接到/lib/i386-linux-gnu/libpng12.so,但是我新建的libpng安裝在/ usr/local/lib中。我怎樣才能讓SDL_image鏈接到新版本?我嘗試將新的庫(libpng16.so)複製到/ lib/i386-linux-gnu,但它仍然指的是舊的libpnf12.so。

PPPS。最後,我通過將libpng16.so重命名爲libpng12.so.0並將該文件複製到/ lib/i386 ...(其中SDL_image所指的地方)來實現。然而,這個解決方案沒有正派。我仍然在尋找一種方法來告訴SDL_image:「嘿,使用這個更新的libpng!」

回答

1

看來你沒有正確的lib版本編譯。嘗試強制鏈接器在配置中採用正確的版本。

看看那裏的http://www.willusher.io/sdl2%20tutorials/2013/08/18/lesson-3-sdl-extension-libraries/在qa部分,一個人和你有同樣的問題。

此答案也可能有幫助CMake Finding Libraries on Wrong Path

+0

我來看看。我只是編輯我的帖子,你會檢查PLZ嗎?多謝了朋友! – Diaz

+1

你的技巧證實了這個問題。嘗試清理緩存並重建。重命名lib不應該是最好的解決方案。祝你好運;) –

+0

你是對的。我調整了SDL2_image的配置文件,現在它像一個魅力一樣工作。再次感謝! – Diaz