古い Snes9xで使うライブラリのビルド方法 (zlib, libpng)
2011 年時点の Snes9x 向けの zlib と libpng のビルド手順です。2019 年現在は公式ビルドガイドに沿っていればこういったことを考える必要はありません。
本体のビルドについては、Snes9x のソースコードをコンパイルするをご覧ください。
使用するツールとライブラリ
- Visual Studio 2013 Community Edition
- zlib 1.2.8
- libpng 1.6.17
- snes9xgit (2015-04-19, 1.5.4 interim?)
スタティックライブラリをビルドします。DLLであれば些細なバージョン違いでのエラーは発生しないと思うので、手間なく継続的に開発できるようにするには、DLLとリンクする方が良いかもしれません。
本記事では Snes9x 向けのライブラリをビルドするので、文字コード(MBCS/Unicode 両サポート)周りで通常のビルドとは異なる手順を必要とします。
コンパイル手順
前準備
- zlib と libpng のソースコードをダウンロードして展開する
- libpng/projects/vstudio/zlib.props を開いて、ZLibSrcDir を修正する(相対指定は zlib.vcxproj からの相対位置になる)
- zlib/contrib/masmx86/bld_ml32.bat を開いて、ml のオプションに /safeseh を追加する(/safeseh 追加の参考)
- 修正したらソリューション vstudio.sln を開いて、デフォルト設定のビルドが成功することを確認する
Win32 ビルド
*** 最適化及びデバッグオプションの統一
[Debug Library] [Release Library] のオプションを、zlib, libpng についてそれぞれ変更する。
*** zlib コンパイルの修正
- 「error LNK2001: unresolved external symbol _gzclose」への対策を行う
以上を設定後、libpng プロジェクトをリビルドする。
x64 ビルド
Win32 ビルドの構成を複製するので、ビルド設定を完了後に実施してください。
- メニュー [ビルド]-[構成マネージャー] を開いて、Win32 構成を元に x64 構成を新規作成する
- 出力ファイル名を適宜変更する
以上を設定後、libpng プロジェクトをリビルドする。
Unicode ビルド
その他
ライブラリのビルド以外における留意事項です。
- libpng/scripts/pnglibconf.h.prebuilt を pnglibconf.h にリネームして snes9x の所定ディレクトリに配置する