Ubuntu上的Libjpeg 9b静态库:JPEG参数struct mismatch

时间:2016-11-22 13:10:52

标签: c++ libjpeg

我在我的JNI代码中使用libjpeg ver.9b(静态lib)。我已成功编译所有内容并使其运行,直到我触及jpeg部分。控制台显示:

JPEG parameter struct mismatch: library thinks size is 664, caller expects 632

我搜索过,发现大多数人都指向重复的共享库。我想我可能会对此进行排除,因为我已经卸载了机器上的所有libjpeg库(没有剩余libjpeg.so)并将其静态链接到我的代码中。 libjpeg库是在Compiling libjpeg之后和CFLAGS =" -O3 -fPIC"之后在同一台机器上构建的。问题出在哪里,我该如何解决?

1 个答案:

答案 0 :(得分:0)

这听起来似乎系统中仍然存在另一个版本库的标题。您是否通过使用打包系统删除软件包来卸载以前的库,或者只是手动删除了库? (然后标题可能仍保留在系统中 - 通常位于/usr/include/usr/local/include

other question中,我没有看到您在命令行中明确提供JPEG库的路径。因此,除非您在构建库之后将库安装到默认位置,否则请尝试通过-I /path/to/correct_jpeg_headers显式传递包含路径。

您还可以尝试查找其他标题的位置,例如使用:

find /usr -name "jpeglib.h"

请注意,即使您使用静态库进行链接,仍然可能使用与客户端使用的标头不同的标头构建静态库,因此可能仍存在结构不匹配(ODR违规),尽管它可能链接成功。