VisualStudio2015 で zlib を使いたい(64bit)
Windows7(64bit) + VisualStudio2015でzlib(compress()/uncompress())を使うまでのメモ。
ちなみに言語はC++です。
zlibをダウンロード
http://zlib.net/から「zlib source code, version 1.2.8」をダウンロードします。執筆時点ではzlib 1.2.8が最新バージョンでした。以降の説明はzlib 1.2.8での説明になるので、今後のバージョンアップによっては操作が異なる場合もあるかもしれません。
zlibをビルド
zlib 1.2.7 を Visual Studio 2012 Express でビルドするを参考に、zlibをビルドします。上記参考ページに記載されるエラーが全員登場しましたが、ページの通りに操作することで対処出来ました。
また、zlib 1.2.8ではcontrib/vstudio/vc11フォルダがあるため、vc10ではなくvc11内のソリューションでビルドを行いました。
加えて、zlibstat.libのリンクはVisual Studio側の設定で行っています(過去記事参照)。
64bit環境での利用
私の環境では、上の参考ページの通りに操作するとzlib利用時にアプリケーションを正しく起動できませんでした 0xc00007bというエラーメッセージと共にアプリケーションが終了してしまいます。
少し調べると、ライブラリとライブラリを使用する側でx86とx64が混在していると発生するようです。
VisualStudioではそれらの系が混在していると「x86とx64が競合しています」的なエラーを吐いてくれる気がするのですが……(勉強不足)
ともかく、以下の方法で動作を確認しました。
- zlibのターゲットをx64に変更する
- zlib利用側のターゲットもx64に変更する
いつくかのビルドに失敗しますが、自分が目的としているzlibstat.libがソリューション下のx64/ZlibStatDebug/に生成されているので良しとします。
同様に利用側のターゲットも変更します。 あとは、生成されたzlibstat.libを利用側のソリューション下に配置してあげれば、とりあえずWin64環境では動くはずです。
もっとスマートな解決方法をご存知の方は是非教えてください…
かなり強引なやり方だと思うので最後の手段的としてどうぞ!