3

プロジェクトで JPEG 処理機能が必要なので、いつものように作成したパッケージをダウンロードした後、jpeg-8d ライブラリを使用することにしました./configure; make and make installmake testエラーは返されず、プロセス全体で問題は報告されませんでしたがexample.c、Code Blocks 10.05 で開くとコンパイルに失敗しました。私はいくつかの解決策を「ググって」追加しました

#ifdef __cplusplus
extern "C" {
#endif
...
#ifdef __cplusplus
}
#endif

jpeglib.hファイル内で再コンパイルし、これらの行をコード ブロックのリンカ セクションに 追加しました。また/usr/local/lib/libjpeg.a /usr/local/lib/libjpeg.so 、ディレクトリをディレクトリ セクションに追加しました。しかし、コンパイラはまだ example.c をコンパイルできません。いくつかのエラーがあります:

> /home/raff/CodeBlocks/jpeg-8d/example.c|116|warning: incompatible implicit declaration of built-in function ‘exit’|
> example.c|| undefined reference to 'image_width'
> example.c|| undefined reference to 'image_height'

誰かが jpeg ライブラリを正常にインストールして使用した場合は、助けてください。IDE や Linux ディストリビューションを切り替えることに問題はありません。

4

3 に答える 3

1

ライブラリのインストールは問題ないようです (そうしないとjpeglib.h、コンパイル中に欠落していると文句を言うでしょう)

このファイルexample.cは、コンパイルして使用できるコードではなく、ドキュメントの一部であると想定されています。main()たとえば、がないことに注意してください。jpegファイルの圧縮・解凍方法のコーディング方法の参考にしてください。

変数image_widthand image_height(およびimage_buffer) は として宣言されexternているため、別のファイルで定義されていると見なされます。これらの変数を定義してバッファを埋めるプログラムを作成すると、提供されたメソッド (write_JPEG_fileおよびread_JPEG_file) を使用できるようになります。

于 2012-10-28T20:46:34.983 に答える
0
  1. 静的ライブラリまたは共有ライブラリとリンクしていますか?
  2. 静的な場合、リンカーのコマンド ラインでオブジェクト ファイルの後に配置しますか?
  3. 共有されていて、新しいツールチェーンを使用している場合、これも問題である可能性があります。
  4. 正しくリンクしている場合、 readelf -s は共有ライブラリに何を表示しますか? nm は静的ライブラリで何を表示しますか?
于 2012-10-28T20:36:33.127 に答える
0

example.c は実際にはこのライブラリを使用した例であると確信していたので、その内容を確認しませんでした。さらに、さらにいくつかの問題がありました。適切なプログラムを書いた後、エラーが発生しました:

error while loading shared libraries libjpeg.so.8: cannot open shared object file: No such file or directory

しかし、これは次のシェル コマンドのペアによって修正されました。

ranlib /usr/local/lib/libjpeg.a
ldconfig /usr/local/lib

お役に立てれば。

于 2012-10-30T19:29:50.210 に答える