2016-11-22 3 views
1

JNIコードでlibjpeg ver.9b(static lib)を使用しています。私はjpegの部分に触れるまで、すべてをうまくコンパイルして実行しています。コンソールには次のように表示されます。Libjpeg 9bスタティックライブラリ(Ubuntu版):JPEGパラメータ構造体不一致

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

私は検索して、ほとんどの人が重複した共有ライブラリを指していることを発見しました。私はマシン上で(libjpeg.soは残っていない)すべてのlibjpegライブラリをアンインストールし、それを静的に自分のコードにリンクしているので、これを排除するかもしれないと思う。 libjpegライブラリは、Compiling libjpegとCFLAGS = " - O3 -fPIC"という同じマシン上に構築されました。問題がどのようなアイデアであり、どのように修正するべきですか?

答えて

0

これは、システムに残っている別のバージョンのライブラリのヘッダーがまだ残っているようです。パッケージシステムを使用してパッケージを削除して以前のライブラリをアンインストールしたか、ライブラリを手動で削除しましたか? (ヘッダはシステム内に残っている可能性があります - 通常/usr/includeまたは/usr/local/include

other questionでは、コマンドラインでJPEGライブラリへのパスを明示的に指定することはできません。したがって、ライブラリを構築した後にデフォルトの場所にライブラリをインストールしていない場合は、インクルードパスを-I /path/to/correct_jpeg_headersで明示的に渡してみてください。

また、使用することによって、たとえば、他のヘッダの場所を見つけることを試みること:あなたは、静的ライブラリとリンクにもかかわらず、静的ライブラリがあったことはまだ可能であること

find /usr -name "jpeglib.h" 

注意をクライアントが使用しているヘッダーとは異なるヘッダーでビルドするので、正常にリンクする可能性がありますが、構造の不一致(ODR違反)が残る可能性があります。

+0

ありがとうございました。彼らはどちらもver.9bですが、別のヘッダーを使用していました。 libjpegライブラリをコンパイルするときには、全プロセス(configure-> make-> make install)を実行して作成したセットを使用し、ダウンロードしたソースコードのヘッダを参照のために直接使用しました。 –

関連する問題