-1

この質問/回答は、最終的にこの質問に対する完全な回答として役立ちます: C++ で JPEG 画像を操作/回転するにはどうすればよいですか? その質問に対する回答は、以下のすべてを既に行っている場合にのみ役立ちます。

ここのガイドに従いました: libjpeg のコンパイル (MINGW32 シェルを使用した受け入れられた回答ガイド)

新しいコピーをダウンロードしても機能しません。

$ make
make  all-am
make[1]: Entering directory `/c/tmp/jpeg-9'
  CC       jaricom.lo
  CC       jcapimin.lo
jcapimin.c:127:1: error: conflicting types for 'jpeg_suppress_tables'
jcapimin.c:128:1: note: an argument type that has a default promotion can't matc
h an empty parameter name list declaration
In file included from jcapimin.c:22:0:
jpeglib.h:997:14: note: previous declaration of 'jpeg_suppress_tables' was here
make[1]: *** [jcapimin.lo] Error 1
make[1]: Leaving directory `/c/tmp/jpeg-9'
make: *** [all] Error 2

8d と 9 はどちらも同じことを行います。

この質問に記載されている変更を行った後: libjpeg を mingw でコンパイルします。

次の定義を jconfig.h に追加します。

#define HAVE_PROTOTYPES 1

作成時に次の出力が得られます。

$ make
make  all-am
make[1]: Entering directory `/c/tmp/jpeg-9'
  CC       jaricom.lo
In file included from jinclude.h:20:0,
                 from jaricom.c:17:
jconfig.h:5:24: warning: extra tokens at end of #undef directive [enabled by def
ault]
  CC       jcapimin.lo
In file included from jinclude.h:20:0,
                 from jcapimin.c:21:
jconfig.h:5:24: warning: extra tokens at end of #undef directive [enabled by def
ault]
jcapimin.c:127:1: error: conflicting types for 'jpeg_suppress_tables'
jcapimin.c:128:1: note: an argument type that has a default promotion can't matc
h an empty parameter name list declaration
In file included from jcapimin.c:22:0:
jpeglib.h:997:14: note: previous declaration of 'jpeg_suppress_tables' was here
make[1]: *** [jcapimin.lo] Error 1
make[1]: Leaving directory `/c/tmp/jpeg-9'
make: *** [all] Error 2

次に、「autoheader」を実行してこれを修正し、再度作成する必要があります。

おそらく作成されましたが、./configure --prefix=/c/tmp/jpeg-9-build/ で設定されたビルド ディレクトリには何もありません

プロジェクト ディレクトリ内の .lib フォルダに libjpeg-9.dll が見つかりました。

乱雑..問題は次のとおりです。Eclipseでどのように使用しますか?

メイン ディレクトリに exe があり、.lib サブディレクトリにいくつかの exe と DLL がありますが、.lib ファイルはありません - これらを Eclipse プロジェクトにインポートして、DLL 内の関数を呼び出せるようにするにはどうすればよいですか?

$ make installビルドディレクトリにファイルを集めました。

ビルド ディレクトリの内容を作業中の Eclipse プロジェクトに移行し、ライブラリとインクルード パスをリンクしました。

Eclipse での jpeglib の基本的な実装のディレクトリ ツリー

これが私が使いたい方法に合っているかどうかはわかりませんが、それは何かであり、コンパイルされます。次の部分: DLL から関数を呼び出す?

コンパイルされた jpegtran.exe の使用に関連: jpegtran.exe が画像を正しく回転しない

ライブラリを使用して別のプロジェクトでコンパイルしようとしています: libjpeg から jpegtran.c コードをコンパイルするのに助けが必要です

現在の問題: libjpeg から jpegtran.c コードをコンパイルするのに助けが必要

4

1 に答える 1

1

jconfig.h ファイルを更新するためのアドバイスは#define HAVE_PROTOTYPES 1、より深い問題に対する一時的な解決策にすぎません。jconfig.h が破損しており#undef、コンパイラがサポートする多くの重要な項目が正しくありません。

これを回避する適切な方法は、install.txt のアドバイスに従って、ckconfig.c を手動でコンパイルし、jconfig.h を生成してから、make に進み、make install することです。

于 2013-03-14T00:37:36.320 に答える