我的应用程序使用 libjpeg 读取/写入 JPEG 图像。一切正常
最近我的应用程序在尝试编写 JPEG 图像时开始崩溃,并在调用 jpeg_create_compress() 时出现错误“错误的 JPEG 库版本:库为 80,调用者期望为 62”(因此崩溃似乎是 libjpeg 端的故意中止而不是段错误)
一些调查表明,确实我的应用程序是针对 libjpeg-62 头文件(安装在 /usr/local/include 中)编译的,然后使用来自 libjpeg-80 的 dylib(安装在 /usr/lib/i386-linux- gnu/).
删除 libjpeg-62 头文件并使用 libjpeg-80 头文件进行编译解决了该问题。
但是,即使某些最终用户安装的库版本与编译我的应用程序所针对的库版本不同,我也希望有一个解决方案可以让我防止此类崩溃。
1)如果我能以某种方式说服 libjpeg 即使出现致命错误也不要中止,那就太好了;例如:
jpeg_abort_on_error(0);
2)或有一个非中止检查是否安装了正确的库:
if(!jpeg_check_libraryversion()) return;
3)如果这不是开箱即用的,我可以手动检查编译时API版本(JPEG_LIB_VERSION)与运行时检测到的兼容版本。
不幸的是,我无法在 API 中找到任何可以让我使用其中任何一种方法的东西。
我只是盲人还是我需要完全不同的东西?