JPEGalleg-2.5 ライブラリをXcodeから利用する

jpgalleg-2.5

bmp画像はなにかと容量を食うのでなんとかしたい、代わりにJPEG画像を利用できれば...
と思ったとします。しかし残念ながらAllegro にはまだJPEG画像を読み込む関数がありません、
そこで様々な人がAllegro に機能を追加するための拡張ライブラリを公開しています。

たとえば、JPEG画像を読み込ませるためのライブラリjpgalleg-2.5 がそうです。
今回はこのライブラリを MaxOS X と Xcodeから使ってみようと思います。

インストール

◆Enhansed Creations ++
http://www.ecplusplus.com/index.php?page=home

このサイトの Downloads からjpgalleg-2.5.tar.gz をダウンロードします。
展開すると jpgalleg-2.5 というディレクトリができます。
ターミナルを使って、以下のようにコマンドするとインストールできます。
cd jpgalleg-2.5

./fix.sh macosx
make STATICLINK=1
sudo make install
STATICLINK=1 というのは、静的リンクを有効にするという設定。
実行ファイル内にライブラリをまとめられるので、
プログラムを配布した場合に、他の人の環境で実行する場合でも、
Allegroやjpgallegライブラリを探してインストールする必要がなくなります。

静的(Static )ライブラリ;(コンパイル時にライブラリとappが一緒になる。 )
 静的リンクによりプログラム内にライブラリを結合して使う方法。
gcc等でコンパイルされた obj ファイル xxx.oを 'ar' コマンドで lbxxx.a にアーカイブして作成する。

動的(Dynamic)ライブラリ:(ライブラリ と app が別々 )
 動的リンクによりプログラムが必要に応じて他の場所にあるライブラリを呼び出す方法。


共有(Shared)ライブラリ:Windows の DLL等
 色々なプログラムが共通して使える機能を提供する汎用のライブラリ。

参考URL
http://e-words.jp/,http://yougo.ascii24.com/
http://www.linux.or.jp/JF/JFdocs/Program-Library-HOWTO/index.html
  

ライブラリの組み込み

インストールが終わったので、今度は このライブラリを組み込んで、 Xcode からビルドして、うまく動作するか確かめる必要があります。 jpgalleg の example ディレクトリには、サンプルプログラムが 収録されているので、それを試してみることにします。

ex1.c  というサンプルプログラムは pgalleg.jpg という JPEG画像ファイルを読み込むというものです。

  まずは、 Xcode で新規allegro プロジェクトを作成して、ひな形プログラムを作ります。
  ex1.c をテキストエディタで開いて全文をコピーし、Xcode の main.c の内容へペーストして置き換えます。
  #include によってこのライブラリを使う事ができます。

次に、プロジェクトの ある ディレクトリ内の build ディレクトリに、
jpgalleg.jpg をコピーしておきます。(そこに置いとくとアプリが画像を読込めます。)
しかし、これで 「ビルドと実行」を行おうとすると。 コンパイル時に「Undefined symbols」というエラーが表示され失敗してしまいます。 このエラーメッセージは、ライブラリとのリンクがうまくいってないのが原因らしいです。

 
 jpgalleg の Readme.txt の
  Using JPGalleg の 項 を読むと、 「-ljpgal」オプションを追加せよと書いてあります。
   gcc myprog.c -o myprog.exe -lalleg -ljpgal
  コマンドラインから gcc を使ってコンパイルするなら上のコマンドを使えばいいですが  Xcodeでは勝手が違います。この情報をもとにXcodeで同じように設定することにします。

◆Xcode で開発する場合

Xcode で同じようにするには、先ほどのサンプルプログラムの 左ペインの「グループとファイル」 ツリーの   ターゲット>[ターゲット名]を選択。そしてターゲット の 設定>シンプルビュー>「リンカ設定」 を選択。
リンカ設定の「その他の Mach-O リンカフラグ」という欄を探してください。 


-L/usr/local/lib -lalleg-main となってますが、 それに、「-ljpgal」 を追加します。 これでリンクされました。それでもう一回ビルドしてみるとコンパイルが成功すると思います。 このデモはフルスクリーン画面でJPG画像がロードされ、ESCキーを押すと終了します。

◆配布されているライブラリをOSXで利用する際のポイント

  • OS X 用に fix スクリプト や config 設定が用意されてると導入の可能性が高いです。
  • ReadMe を読んでmake 時の オプションをみておく(フレームワークや静的リンクなど)
  • ReadMe を読んで gcc のコンパイル時の コマンドをチェック
  • Xcodeの「その他の Mach-O リンカフラグ」にそのコマンドを追加
  •   (Undifined symbols エラーを防ぐ)

    ◆最後に

     #include と宣言すると。JPEGalleg ライブラリを利用するとAllegro からJpeg画像をロードしたりできる関数を使えるようになります。また、JPEGallegの各機能については、JPEGalleg の説明書に書かれています。

     便利なライブラリを提供してくださった配布元サイトに感謝いたします。
    Last modified 2005/03/08