在编译libjpeg然后使用它时,我偶然发现了这个问题:
JPEG parameter struct mismatch: library thinks size is 512, caller expects 492
之后程序停止。这种情况特别是在结构struct jpeg_decompress_struct和上发生的struct jpeg_compress_struct。如果取消了对这些结构的检查,则程序将崩溃,并出现空指针异常,并且结构成员包含垃圾。
从版本6b的预编译二进制文件,或者从版本9a的预编译二进制文件,到版本9a的编译错误都会发生此错误;在Windows(32位)上使用MinGW,MSYS 1.0进行编译。在配置文件中乱七八糟没有帮助;该数字492可以更改,但决不能等于512,以使程序正常运行。
libjpeg编译确实创建了一个有效的cjpeg.exe和djpeg.exe。
有任何想法吗?
就我而言,问题在于库和我的程序是使用不同的值编译的HAVE_BOOLEAN,因此boolean类型具有不同的大小。
库是在HAVE_BOOLEAN未定义的情况下编译的,因此它按照 libjpeg 中的定义使用int。程序是按照HAVE_BOOLEAN定义进行编译的,并且由于 libjpeg 之前包含了一些其他标头,因此它unsigned char按照 Windows RTL 中的定义使用。
我使用的原因HAVE_BOOLEAN是修复有关此问题的编译错误,但随后导致了链接器错误。相反,正确的解决方案是不在使用 libjpeg 的文件中包含 Windows RTL(或包含它的任何文件)。
| 归档时间: | 
 | 
| 查看次数: | 2682 次 | 
| 最近记录: |