libpng のビルドのやり方 (Windows 10+ Visual Studio 2017)

すぐ忘れるので、備忘録です。間違っているよ。ということがあれば、お教え下さい。。(__)

libpng とzlib から、ソースリストを落とす

lpng1635.zip と、 zlib128.zip
(そのときによって、バージョンが違うと、数字も異なります)
(zip ファイルだと、Windowsで標準対応しているので、良い)


lpng1635.zip を展開する。(右クリックして、すべて展開)

ディレクトリーをたどる。

lpng1635 --> lpng1635 --> projects --> visualc71

その中の、libpng.vcprojを開く


Visual Studio 2017が次のことをきいてくるので、全てはいにする

  1. プロジェクトファイルの一方向のアップグレード (vcxproj に変換)
  2. 信頼性チェック

成功すれば、変換レポートが表示されるので、Alt+Tab でVisual Studio に戻る


F5でビルドする

Windows SDK 8.1 が見つかりません となった場合

解決法としては、SDK 8.1 を入れる。。。または、設定の方を 変えてしまう方法があります。

8.1って、Windows 8.1の事?昔のWindowsの事を考えるなら、入れた方がいい加茂ですが。。


設定の方を変える場合

プロジェクト→プロパティ→構成プロパティ→全般のWindows SDK バージョンが 8.1 になっているのを 10.x.x... に変える

zlib関係が見つからないエラーになる

lpng1635 の下に、zlib-1.2.8 を展開したディレクトリをコピーする

lpng1635 -- lpng1635
         -- zlib-1.2.8 ←これをコピーする


zlib-1.2.8 の名前を、zlib に変更する。(libpng からの参照が、zlib になっているため)


再度、f5でビルドする

libpng.dll を開始できませんというエラーが出る。

↑この辺がよく分かってないが、visualc71 の下の、Win32_DLL_Debug にファイルが出来ている

動的ライブラリ

Visual Studio の上の方に、DLL Debug か、DLL Releaseとなっていると、DLL版が出来るらしい

LIBPNGを使いたいプログラムに、libpng.lib をリンクすると、実行時に、libpng16d.dll ファイルを探してきて、自動的に読み込んでくれる。(libpng16d の d は、デバッグ版の場合)

静的ライブラリ

LIB Debug か LIB Release になっていると、静的ライブラリになるらしい。

libpng.lib と、zlib.libを直接リンクする。

ライブラリと、インクルードファイルを、広く分かりやすい場所にコピーする

Unix系だと、sudo make install とかで、/usr/local/lib とか、/usr/local/include とかに綺麗に入ってくれるんですけど、素のWindowsって、そもそも、そういう場所自体がないですよね。。汗

何故無いんでしょうか? (;´∀`)

そもそも、プログラマー御用達のUnixと、MS-DOSが発祥のWindowsと比べること自体がおかしなことなのでしょうか。。それはともかく、ないものはしょうがないので、たとえば、下記のように作ってしまうかですね。。


c:\lib\libpng\

c:\include\libpng\

とか。。。Unixと同じでもいいんですが、パスがながったらしくなりますしね。。(^^;