私のアプリケーションはlibjpegを使用してJPEG画像を読み書きします。すべてがうまくいきました
最近、jpeg_create_compress()を呼び出すときに「間違ったJPEGライブラリバージョン:ライブラリは80、呼び出し元は62を期待します」というエラーでJPEG画像を書き込もうとすると、アプリがクラッシュし始めました(したがって、クラッシュはlibjpeg側ではなく意図的な中止のようですセグメンテーション違反)
少し調べてみると、実際に私のアプリケーションはlibjpeg-62ヘッダー(/ usr / local / includeにインストールされている)に対してコンパイルされ、libjpeg-80(/ usr / lib / i386-linux-にインストールされている)のdylibを使用していることがわかりました。 gnu /)。
libjpeg-62ヘッダーを削除し、libjpeg-80ヘッダーを使用してコンパイルすると、問題が解決しました。
ただし、一部のエンドユーザーがアプリのコンパイル対象とは異なるライブラリバージョンをインストールしている場合でも、このようなクラッシュを防ぐことができるソリューションをいただければ幸いです。
1)致命的なエラーがあっても中止しないようにlibjpegを説得できれば素晴らしいと思います。例:次のようなもの
jpeg_abort_on_error(0);
2)または、正しいライブラリがインストールされているかどうかを非中止チェックします。
if(!jpeg_check_libraryversion()) return;
3)それが箱から出して実行できない場合は、コンパイル時のAPIバージョン(JPEG_LIB_VERSION)を実行時に検出された互換バージョンと手動でチェックすることで問題ありません。
残念ながら、APIでこれらのメソッドのいずれかを使用できるものを見つけることができませんでした。
私はただ盲目ですか、それとも完全に異なるものが必要ですか?