#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 лет спустя. Не хотел торопиться 🙂