libpng “png_set_longjmp_fn” не найден

Я использую libpng из ubuntu, и когда я пытаюсь скомпилировать файл c ++, который я получаю

неопределенная ссылка на `png_set_longjmp_fn ‘

Я использую libpng версию 1.6.8

Если вы заинтересованы в чтении кода, пожалуйста, дайте мне знать, но я не это касается моего плохого кода.

Заранее спасибо.

Возможно, вы создали libpng-1.6.8, но ссылаетесь на более раннюю версию libpng. API-интерфейс «png_set_longjmp_fn ()» был введен в libpng-1.4.x. Ubuntu 13:10 в настоящее время поставляется с libpng-1.2.49 (см. / Usr / include / libpng12), который не предоставляет png_set_longjmp_fn ().

Если вы сделаете это на старой программе Playstation Portable, у вас также могут быть устаревшие библиотеки в исходном каталоге. Запустите rm *.a затем make clean что произошло, чтобы исправить это сообщение об ошибке для меня.

В моем случае у меня старый png 1.2 появился с моим ubuntu, установленным в / usr. Я установил 1.6.x в / usr / local. В моей системе make по умолчанию includeся / usr / include и linking / usr / lib. При компиляции любого программного обеспечения, которое полагается на новый интерфейс, вам нужно добавить

 CPPFLAGS="-I/usr/local/include $CPPFLAGS" LDFLAGS="-L/usr/local/lib $LDFLAGS" 

это поднимет

 grep png_set_longjmp_fn png.h PNG_EXPORT(8, jmp_buf*, png_set_longjmp_fn, (png_structrp png_ptr, (*png_set_longjmp_fn((png_ptr), longjmp, (sizeof (jmp_buf)))) 

от более нового интерфейса