如何在 jpeglib.h (jpeg-8c) 中包含 <stdio.h>

mk_*_*mk_ 1 c++ eclipse

我想用 C++ 编辑一些 jpeg 文件。我链接到 libjpg 并编译了我的代码。编译器抱怨 typedefs FILE 和 size_t。我用 google 搜索了这个问题,发现这个库被设计为在 C 而不是 C++ 下编译,所以我们必须手动将 include stdio.h 添加到“jpeglib.h”。我这样做了,但这次编译器给了我以下错误:

\n\n
undefined reference to `jpeg_CreateCompress\'    JPGImage.cpp    /KFCK/src   line 47 C/C++ Problem\nundefined reference to `jpeg_CreateDecompress\'  JPGImage.cpp    /KFCK/src   line 92 C/C++ Problem\nundefined reference to `jpeg_destroy_compress\'  JPGImage.cpp    /KFCK/src   line 77 C/C++ Problem\nundefined reference to `jpeg_destroy_decompress\'    JPGImage.cpp    /KFCK/src   line 123    C/C++ Problem\nundefined reference to `jpeg_finish_compress\'   JPGImage.cpp    /KFCK/src   line 74 C/C++ Problem\nundefined reference to `jpeg_finish_decompress\' JPGImage.cpp    /KFCK/src   line 120    C/C++ Problem\nundefined reference to `jpeg_read_header\'   JPGImage.cpp    /KFCK/src   line 102    C/C++ Problem\nundefined reference to `jpeg_read_scanlines\'    JPGImage.cpp    /KFCK/src   line 115    C/C++ Problem\nundefined reference to `jpeg_set_defaults\'  JPGImage.cpp    /KFCK/src   line 61 C/C++ Problem\nundefined reference to `jpeg_set_quality\'   JPGImage.cpp    /KFCK/src   line 62 C/C++ Problem\nundefined reference to `jpeg_start_compress\'    JPGImage.cpp    /KFCK/src   line 65 C/C++ Problem\nundefined reference to `jpeg_start_decompress\'  JPGImage.cpp    /KFCK/src   line 104    C/C++ Problem\n
Run Code Online (Sandbox Code Playgroud)\n\n

它找不到库函数。如果我删除 stdio.h 行并再次编译,我会得到以下结果:

\n\n
\xe2\x80\x98FILE\xe2\x80\x99 has not been declared    KFCK        line 956, external location: /home/../jpeg-8c/jpeglib.h C/C++ Problem\n\xe2\x80\x98FILE\xe2\x80\x99 has not been declared    KFCK        line 957, external location: /home/../jpeg-8c/jpeglib.h C/C++ Problem\n\xe2\x80\x98size_t\xe2\x80\x99 does not name a type   KFCK        line 756, external location: /home/../jpeg-8c/jpeglib.h C/C++ Problem\n\xe2\x80\x98size_t\xe2\x80\x99 does not name a type   KFCK        line 768, external location: /home/../jpeg-8c/jpeglib.h C/C++ Problem\n\xe2\x80\x98size_t\xe2\x80\x99 has not been declared  KFCK        line 799, external location: /home/../jpeg-\n
Run Code Online (Sandbox Code Playgroud)\n\n

我应该做些什么?

\n

Dea*_*vey 6

把#include放回去。但它看起来非常像你在链接时没有添加 -ljpeg 或类似的东西。此外,您还需要确保如果您将其包含在 C++ 代码中,您可能需要执行以下操作:

extern "C" {
#include <jpeglib.h>
}
Run Code Online (Sandbox Code Playgroud)