2014年2月20日木曜日

C++ VisualStudio2008でzlibを使う

生のファイルじゃなくて圧縮したファイルをリソースとして使いたい。そんな私に、zlib。
そんなわけで、zlibを使ってみた。

zlibはzipやgzipに使われている圧縮アルゴリズムをライブラリ化したもの。
pngの圧縮もこのzlib。

参考サイト
Windows・VC++でZlibを使う(VisualStudio2008)

zlibをダウンロードする


まずはホームページからzlibのソースを持ってくる。
とりあえずその時の最新版をもってくりゃよかろう。
この記事を書いている当時はzlib-1.2.8だったので、記事もそれに倣って書く。

makefileの設定


参考サイトに倣ってzlib-1.2.8/win32/makefile.mscを書き換える。

/*---------------------------------------------------------------------------*/
# optional build flags
LOC =
OC =
OL =
/*---------------------------------------------------------------------------*/

OCとOLを追加。

/*---------------------------------------------------------------------------*/
CFLAGS  = -nologo -W3 -O2 -Oy- -Fd"zlib" $(LOC) $(OC)
LDFLAGS = -nologo -debug -incremental:no -opt:ref $(OL)
/*---------------------------------------------------------------------------*/

CFLAGSはコンパイラオプション。LDFLAGSはリンクオプション。
追加したOCとOLを使用するように設定。

コンパイルする


スタートメニューの全てのプログラムから「VisualStadio2008コマンドプロンプト」を起動するなり、
参考サイトのように自分でbatファイルを実行するなりして環境変数を通す。
zlibがあるフォルダまで移動して、以下のコマンドを実行。

/*---------------------------------------------------------------------------*/
リリースビルド
nmake -f win32\Makefile.msc LOC="-DASMV -DASMINF" OBJA="inffas32.obj match686.obj" OC="/MT"

デバッグビルド
nmake -f win32\Makefile.msc LOC="-DASMV -DASMINF" OBJA="inffas32.obj match686.obj" OC="/MTd /Z7" OL="/PDB:zlib.pdb"
/*---------------------------------------------------------------------------*/

zlib1.dll,zdll.lib,zlib.lib,zlib.pdbが生成される。参考サイトで言ってることと違ってデバッグじゃなくてもzlib.pdbができてしまった。

適当なプロジェクトでリンカオプションを設定して実行。
問題なく動作したのでよしとする。


0 件のコメント:

コメントを投稿