JPEG参数结构不匹配

时间:2014-04-07 23:55:13

标签: c struct libjpeg

Ater编译libjpeg然后使用它,我偶然发现了问题:

JPEG parameter struct mismatch: library thinks size is 512, caller expects 492

之后程序停止。特别是结构struct jpeg_decompress_structstruct jpeg_compress_struct会发生这种情况。如果在这些结构上删除了检查,程序会因空指针异常而崩溃,并且结构成员包含垃圾。

版本6b的预编译二进制文件或预编译版本9a以及编译版本9a发生错误;在Windows(32位)上使用MinGW,MSYS 1.0编译。在配置文件中乱搞并没有帮助;数字492可以更改,但永远不等于512,以便程序运行。

libjpeg编译确实创建了有效的cjpeg.exedjpeg.exe

有什么想法吗?

2 个答案:

答案 0 :(得分:0)

在我的情况下,问题在于库和程序使用不同的HAVE_BOOLEAN值编译,因此boolean类型的大小不同。

库是使用未定义的HAVE_BOOLEAN编译的,因此它使用的是libjpeg中定义的int。程序是使用定义的HAVE_BOOLEAN进行编译的,并且由于在libjpeg之前包含了其他一些头文件,因此该程序使用的是Windows RTL中定义的unsigned char

答案 1 :(得分:0)

连接链接器时,静态软件包体系结构似乎不符合当前的软件包体系结构。建议下载源代码并将其编译为具有相同参数的静态库。再试一次,请记住引用正确的版本。