我想用 C++ 编辑一些 jpeg 文件。我链接到 libjpg 并编译了我的代码。编译器提示 typedefs FILE 和 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-
我该怎么办?
最佳答案
把#include 放回去。但是看起来很像你在链接时没有添加 -ljpeg 或类似的东西。此外,您还需要确保如果将其包含在 C++ 代码中,您可能需要执行以下操作:
extern "C" {
#include <jpeglib.h>
}
关于c++ - 如何在 jpeglib.h (jpeg-8c) 中包含 <stdio.h>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8031615/