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が競合しています」的なエラーを吐いてくれる気がするのですが……(勉強不足)

 

ともかく、以下の方法で動作を確認しました。

  1. zlibのターゲットをx64に変更する
  2. zlib利用側のターゲットもx64に変更する

ソリューションのターゲットを変更するには、VisualStudioのソリューションエクスプローラーからソリューションを右クリック→構成マネージャー(O)で次のような画面が表示されるので、アクティブソリューションプラットフォームをx64に変更します。

bandicam 2015-08-08 23-20-54-284

いつくかのビルドに失敗しますが、自分が目的としているzlibstat.libがソリューション下のx64/ZlibStatDebug/に生成されているので良しとします。

同様に利用側のターゲットも変更します。

あとは、生成されたzlibstat.libを利用側のソリューション下に配置してあげれば、とりあえずWin64環境では動くはずです。

 

もっとスマートな解決方法をご存知の方は是非教えてください…

かなり強引なやり方だと思うので最後の手段的としてどうぞ!

コメントを残す

*

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>