Мне нужны возможности обработки JPEG в моем проекте, поэтому я решил использовать библиотеку jpeg-8d, после загрузки пакетов, которые я сделал обычным ./configure; make and make install
, make test
не возвращает никаких ошибок и никаких проблем не было сообщено в течение всего процесса, но когда я открыл example.c
в Code Blocks 10.05 компиляция не удалась. Я «погуглил» некоторые решения и добавил
#ifdef __cplusplus
extern "C" {
#endif
...
#ifdef __cplusplus
}
#endif
В jpeglib.h
перекомпилировал файл, затем добавил эти строки в секцию компоновщика блоков кода:
/usr/local/lib/libjpeg.a
/usr/local/lib/libjpeg.so
также добавлены соответствующие каталоги в раздел каталогов.
но компилятор все еще не может скомпилировать example.c, вот некоторые из ошибок:
> /home/raff/CodeBlocks/jpeg-8d/example.c|116|warning: incompatible implicit declaration of built-in function ‘exit’|
> example.c|| undefined reference to 'image_width'
> example.c|| undefined reference to 'image_height'
Если кто-то успешно установил и использовал библиотеку jpeg, пожалуйста, помогите, у меня нет проблем с переключением IDE и / или дистрибутива Linux.
Ваша установка библиотеки, кажется, в порядке (в противном случае он будет жаловаться на отсутствие jpeglib.h
во время компиляции)
Файл example.c
должен быть частью документации, а не кодом, который вы можете скомпилировать и использовать. Обратите внимание, что нет main()
, например. Вы должны использовать его как справочную информацию о том, как кодировать методы для сжатия и распаковки файлов JPEG.
Переменные image_width
а также image_height
(а также image_buffer
) объявлены как extern
поэтому они должны быть определены в каком-то другом файле. Вы можете написать свою программу, определяющую эти переменные и заполняющую буфер, и только после этого вы можете использовать предоставленные методы (write_JPEG_file
а также read_JPEG_file
).
Я был настолько уверен, что example.c на самом деле был примером использования этой библиотеки, что я не проверял ее содержимое. Более того, было еще несколько проблем.
После написания правильной программы я обнаружил ошибку:
error while loading shared libraries libjpeg.so.8: cannot open shared object file: No such file or directory
Но это было исправлено с помощью этой пары команд оболочки:
ranlib /usr/local/lib/libjpeg.a
ldconfig /usr/local/lib
Надеюсь это поможет.