C++ 使用jpeg-6b,错误:函数的参数太多‘;void jpeg_CreateDecompress()’;

C++ 使用jpeg-6b,错误:函数的参数太多‘;void jpeg_CreateDecompress()’;,c++,jpeg,libjpeg,C++,Jpeg,Libjpeg,我们的代码使用jpeg库并在较旧的配置中工作,但最近我一直在尝试使其与本地jpeg-6b包一起工作,并且遇到了这样的错误,“函数'void jpeg_CreateDecompress()'的参数太多”。我做了一个简单的应用程序来演示: #include <sys/types.h> #include "jpeg-6b/jpeglib.h" main() { struct jpeg_decompress_struct cinfo; jpeg_create_decompr

我们的代码使用jpeg库并在较旧的配置中工作,但最近我一直在尝试使其与本地jpeg-6b包一起工作,并且遇到了这样的错误,“函数'void jpeg_CreateDecompress()'的参数太多”。我做了一个简单的应用程序来演示:

#include <sys/types.h>
#include "jpeg-6b/jpeglib.h"
main()
{
    struct jpeg_decompress_struct cinfo;

    jpeg_create_decompress(&cinfo);
}
在jpeglib.h中,jpeg_create_decompress是一个宏,它接受一个参数并扩展为jpeg_CreateDecompress,其中有3个参数,使用cinfo作为第一个参数并填充其他两个参数。在我看来,参数计数是正确的:

#define jpeg_create_decompress(cinfo) \
    jpeg_CreateDecompress((cinfo), JPEG_LIB_VERSION, \
                          (size_t) sizeof(struct jpeg_decompress_struct))
EXTERN(void) jpeg_CreateCompress JPP((j_compress_ptr cinfo,
                                      int version, size_t structsize));
EXTERN(void) jpeg_CreateDecompress JPP((j_decompress_ptr cinfo,
                                        int version, size_t structsize));
这只是从谷歌下载的jpeg-6b,在运行“make libjpeg.a”之前通过“configure”配置。我没有更改任何jpeg-6b源代码。可能是一些愚蠢的东西,但有什么想法吗


这是在Ubuntu 14.04.1上。

它为我在Debian Jessie上编译,在使用了
apt get install libjpeg dev
并修复了
#include
语句之后。让我们调试一下。你的编译器需要多少参数?两个?一个?零?如果你直接调用
jpeg\u createdecompression
会发生什么?很抱歉让我这么做一个挂起。直接调用jpeg_CreateDecompress得到了相同的结果。但是我通过复制/修改jconfig.vc(visual C jconfig)解决了这个问题--修改是删除了#define USE_SETMODE行。这至少在Ubuntu 14.04中有效…我不知道为什么它比configure创建的行更好,但它确实有效,所以我继续。
#define jpeg_create_decompress(cinfo) \
    jpeg_CreateDecompress((cinfo), JPEG_LIB_VERSION, \
                          (size_t) sizeof(struct jpeg_decompress_struct))
EXTERN(void) jpeg_CreateCompress JPP((j_compress_ptr cinfo,
                                      int version, size_t structsize));
EXTERN(void) jpeg_CreateDecompress JPP((j_decompress_ptr cinfo,
                                        int version, size_t structsize));