Ater编译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
。
有什么想法吗?
答案 0 :(得分:0)
在我的情况下,问题在于库和程序使用不同的HAVE_BOOLEAN
值编译,因此boolean
类型的大小不同。
库是使用未定义的HAVE_BOOLEAN
编译的,因此它使用的是libjpeg中定义的int
。程序是使用定义的HAVE_BOOLEAN
进行编译的,并且由于在libjpeg之前包含了其他一些头文件,因此该程序使用的是Windows RTL中定义的unsigned char
。
答案 1 :(得分:0)
连接链接器时,静态软件包体系结构似乎不符合当前的软件包体系结构。建议下载源代码并将其编译为具有相同参数的静态库。再试一次,请记住引用正确的版本。