Как мне включить в jpeglib.h (jpeg-8c)

#c #eclipse

#c #eclipse

Вопрос:

Я хочу отредактировать некоторые файлы jpeg с помощью c . Я связался с libjpg и скомпилировал свой код. Компилятор пожаловался на ФАЙЛ typedefs и size_t. Я погуглил проблему и обнаружил, что эта библиотека предназначена для компиляции под C, а не C , поэтому мы должны вручную добавить include stdio.h в «jpeglib.h». Я сделал это, но на этот раз компилятор выдал мне следующие ошибки:

 undefined reference to `jpeg_CreateCompress'    JPGImage.cpp    /KFCK/src   line 47 C/C   Problem
undefined reference to `jpeg_CreateDecompress'  JPGImage.cpp    /KFCK/src   line 92 C/C   Problem
undefined reference to `jpeg_destroy_compress'  JPGImage.cpp    /KFCK/src   line 77 C/C   Problem
undefined reference to `jpeg_destroy_decompress'    JPGImage.cpp    /KFCK/src   line 123    C/C   Problem
undefined reference to `jpeg_finish_compress'   JPGImage.cpp    /KFCK/src   line 74 C/C   Problem
undefined reference to `jpeg_finish_decompress' JPGImage.cpp    /KFCK/src   line 120    C/C   Problem
undefined reference to `jpeg_read_header'   JPGImage.cpp    /KFCK/src   line 102    C/C   Problem
undefined reference to `jpeg_read_scanlines'    JPGImage.cpp    /KFCK/src   line 115    C/C   Problem
undefined reference to `jpeg_set_defaults'  JPGImage.cpp    /KFCK/src   line 61 C/C   Problem
undefined reference to `jpeg_set_quality'   JPGImage.cpp    /KFCK/src   line 62 C/C   Problem
undefined reference to `jpeg_start_compress'    JPGImage.cpp    /KFCK/src   line 65 C/C   Problem
undefined reference to `jpeg_start_decompress'  JPGImage.cpp    /KFCK/src   line 104    C/C   Problem
  

Он не может найти библиотечные функции. Если я удалю строку stdio.h и скомпилирую снова, я получу это:

 ‘FILE’ has not been declared    KFCK        line 956, external location: /home/../jpeg-8c/jpeglib.h C/C   Problem
‘FILE’ has not been declared    KFCK        line 957, external location: /home/../jpeg-8c/jpeglib.h C/C   Problem
‘size_t’ does not name a type   KFCK        line 756, external location: /home/../jpeg-8c/jpeglib.h C/C   Problem
‘size_t’ does not name a type   KFCK        line 768, external location: /home/../jpeg-8c/jpeglib.h C/C   Problem
‘size_t’ has not been declared  KFCK        line 799, external location: /home/../jpeg-
  

Что я должен делать?

Комментарии:

1. studio.h ? С таким вниманием к деталям трудно поверить, что какой-либо конкретный совет спасет вас в долгосрочной перспективе.

2. @KerrekSB studio.h — одна из тех библиотек, зарезервированных для сексуальных программистов, мы просто не любим упоминать об этом остальным из вас, чтобы вы не подумали, что мы хвастаемся.

3. Я считаю, что проще исправить это с помощью заголовка оболочки: // jpeglib.hpp #include <stdio.h> extern "C" { #include "jpeglib.h" }

Ответ №1:

Верните #include обратно. Но это выглядит ужасно, как будто вы не добавляете -ljpeg или что-то подобное при создании ссылки. Также вам нужно убедиться, что если вы включаете это в код C , вам может потребоваться сделать:

 extern "C" {
#include <jpeglib.h>
}
  

Комментарии:

1. Я вернулся, чтобы принять этот ответ 10 лет спустя. Не хотел торопиться 🙂