libjpegをビルドする

2016年3月25日

libjpegは、JPEGのエンコード、デコードを行うためのライブラリである。

http://ja.wikipedia.org/wiki/Libjpeg

まず、Independent JPEG Groupからjpegsr7.zipをダウンロードし、適当な場所に展開する。

VS2008でビルドするので展開したファイルの中からmakexxxx.vc9となっているファイルを集める。

集めたファイルを次のようにリネームする。

makejsln.vc9 → libjpeg.sln  libjpeg本体のソリューションファイル
makejvcp.vc9 → jpeg.vcproj  libjpeg本体のプロジェクトファイル

makeasln.vc9 → jpegutl.sln  jpegファイルを操作するユーティリティプログラムのソリューションファイル
makecvcp.vc9 → cjpeg.vcproj  cjpegのプロジェクトファイル
makedvcp.vc9 → djpeg.vcproj  djpegのプロジェクトファイル
makervcp.vc9 → jpegtram.vcproj  jpegtramのプロジェクトファイル
maketvcp.vc9 → rdjpgcom.vcproj  rdjpgcomのプロジェクトファイル
makewvcp.vc9 → wrjpgcom.vcproj  wrjpgcomのプロジェクトファイル

次にjconfig.vcをjconfig.hとリネームする。

以上の作業が終了後、VS2008からlibjpeg.slnを読み込み、ビルドする。特にエラーは出ずにビルドは完了し、Releaseフォルダにjpeg.libができる。

次にjpegutl.slnを読み込み、ビルドをすると、cjpeg、djpeg、jpegtram、rdjpgcom、wrjpgcomの5つのユーティリティプログラムが作成される。

各プロジェクトはReleaseビルドしか設定されていないため、少なくとも、ライブラリ本体だけでもDebugビルドができるようにプロジェクトを変更する。

jpegプロジェクトのプロパティから構成マネージャを開き、アクティブソリューションの構成のリストボックスで新規作成を選択する。新しいソリューション構成のダイアログボックスが開くので名前の項目にDebug、設定のコピー元にReleaseを指定してOKボタンを押す。

プロパティページに戻って、Debug用に設定を変更する。変更した箇所は以下の通り

  • 「C/C++:全般」→「デバッグ情報の形式」を「エディットコンティニュ用プログラムデータベース(/ZI)」
  • 「C/C++:最適化」→「最適化」を「無効(/Od)」(抜けていました2010/03/01追加)
  • 「C/C++:最適化」→「プログラム全体の最適化」を「いいえ」
  • 「C/C++:プリプロセッサ」→「プリプロセッサの定義」の「NDEBUG」を「_DEBUG」
  • 「C/C++:コード生成」→「簡易ビルドを行う」を「はい(/Gm)」
  • 「C/C++:コード生成」→「基本ランタイムチェック」を「両方(/RTC1,/RTCsuと同等)」
  • 「C/C++:コード生成」→「ランタイムライブラリ」を「マルチスレッドデバッグDLL(/MDd)
  • 「C/C++:コード生成」→「浮動小数点モデル」を「Fast(/fp:fast)」

ウィザードから作ったlibファイル生成のためのプロジェクトを参考にしたので、もしかしたら過不足があるかも。

これでソリューション構成をDEBUGに変更してビルドするとDebugフォルダにjpeg.libができる。

プログラミング

Posted by kinya