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が次のことをきいてくるので、全てはいにする
- プロジェクトファイルの一方向のアップグレード (vcxproj に変換)
- 信頼性チェック
成功すれば、変換レポートが表示されるので、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と同じでもいいんですが、パスがながったらしくなりますしね。。(^^;