2024/01/25(木) [n年前の日記]
#1 [prog] OSDN版のMinGWについて調べてた
OSDN(osdn.net)の閉鎖が決まったという話を見かけた。
_老舗掲示板サイト「スラド」が2024年1月末に終了、「OSDN」も接続困難なまま閉鎖か - 窓の杜
困った。ここ最近利用している MinGW (C/C++コンパイラ + 開発ツール一式) の最新版は OSDN で配布されているわけで…。今後は MinGW が手に入らなくなってしまう…。アプリのビルド等の実験ができなくなる…。
いやまあ、まだ SourceForge から入手できなくはないのだけど、ただ、色々なパッケージのバージョンが古いのだよな…。
_MinGW - Minimalist GNU for Windows download | SourceForge.net
実際のところ OSDN版 MinGW は、SourceForge版 MinGW と比べて、どのくらいパッケージが差し変わっているのか気になってきた。そんなわけで、少し調べてみた。
_老舗掲示板サイト「スラド」が2024年1月末に終了、「OSDN」も接続困難なまま閉鎖か - 窓の杜
困った。ここ最近利用している MinGW (C/C++コンパイラ + 開発ツール一式) の最新版は OSDN で配布されているわけで…。今後は MinGW が手に入らなくなってしまう…。アプリのビルド等の実験ができなくなる…。
いやまあ、まだ SourceForge から入手できなくはないのだけど、ただ、色々なパッケージのバージョンが古いのだよな…。
_MinGW - Minimalist GNU for Windows download | SourceForge.net
実際のところ OSDN版 MinGW は、SourceForge版 MinGW と比べて、どのくらいパッケージが差し変わっているのか気になってきた。そんなわけで、少し調べてみた。
◎ 全パッケージをインストールしてみた :
とりあえず、SourceForge版、OSDN版、両方の MinGW で、ほぼ全パッケージをダウンロードしてインストールしてみた。インストール時に、なんだか大量にコンフリクト(衝突)が起きていたのが気になるけど…。でもまあ、パッケージファイルのダウンロードぐらいはできてるだろう…。
ダウンロードされたパッケージは、以下の場所にキャッシュとして残っている。
SourceForge版と、OSDN版の、それぞれのキャッシュの状態を比較すれば、どのパッケージが差し変わった/新しくなったのかが分かるのではないかなあ、と…。
ダウンロードされたパッケージは、以下の場所にキャッシュとして残っている。
MinGWインストールフォルダ\var\cache\mingw-get\packages\
SourceForge版と、OSDN版の、それぞれのキャッシュの状態を比較すれば、どのパッケージが差し変わった/新しくなったのかが分かるのではないかなあ、と…。
◎ 差し変わったのかもしれないファイルの一覧 :
ということで、OSDN版のキャッシュにはあるけど、SourceForge版のキャッシュには無いパッケージファイルは、以下のような状態だった。
つまり、上記のパッケージファイルをどうにか入手して、解凍して、SourceForge版のファイル群と差し替えてやれば、OSDN版 MinGW 相当になるのではないのかなと…。考えが甘いだろうか…?
binutils-2.32-1-mingw32-bin.tar.xz binutils-2.32-1-mingw32-dev.tar.xz binutils-2.32-1-mingw32-info.tar.xz binutils-2.32-1-mingw32-lang.tar.xz binutils-2.32-1-mingw32-man.tar.xz dos2unix-7.3.2-1-mingw32-bin.tar.lzma dos2unix-7.3.2-1-mingw32-doc.tar.lzma dos2unix-7.3.2-1-mingw32-lic.tar.lzma expat-2.2.9-1-mingw32-bin.tar.xz expat-2.2.9-1-mingw32-html.tar.xz expat-2.2.9-1-mingw32-lic.tar.xz expat-2.2.9-1-mingw32-man.tar.xz gcc-9.2.0-2-mingw32-info.tar.xz gcc-9.2.0-2-mingw32-lang.tar.xz gcc-9.2.0-2-mingw32-lic.tar.xz gcc-9.2.0-2-mingw32-man.tar.xz gcc-ada-9.2.0-2-mingw32-bin.tar.xz gcc-c++-9.2.0-2-mingw32-bin.tar.xz gcc-c++-9.2.0-2-mingw32-man.tar.xz gcc-core-9.2.0-2-mingw32-bin.tar.xz gcc-fortran-9.2.0-2-mingw32-bin.tar.xz gcc-fortran-9.2.0-2-mingw32-info.tar.xz gcc-fortran-9.2.0-2-mingw32-man.tar.xz gcc-objc-9.2.0-2-mingw32-bin.tar.xz gmp-6.1.2-3-mingw32-dev.tar.xz gmp-6.1.2-3-mingw32-info.tar.xz gmp-6.1.2-3-mingw32-lic.tar.xz isl-0.21-2-mingw32-dev.tar.xz isl-0.21-2-mingw32-doc.tar.xz isl-0.21-2-mingw32-lic.tar.xz libatomic-9.2.0-2-mingw32-dll-1.tar.xz libcharset-1.14-4-mingw32-dll-1.tar.xz libexpat-2.2.9-1-mingw32-dev.tar.xz libexpat-2.2.9-1-mingw32-dll-1.tar.xz libgcc-9.2.0-2-mingw32-dll-1.tar.xz libgfortran-9.2.0-2-mingw32-dll-5.tar.xz libgmp-6.1.2-3-mingw32-dll-10.tar.xz libgmpxx-6.1.2-3-mingw32-dll-4.tar.xz libgnat-9.2.0-2-mingw32-dll-9.tar.xz libgomp-9.2.0-2-mingw32-dll-1.tar.xz libiconv-1.14-4-mingw32-bin.tar.xz libiconv-1.14-4-mingw32-dev.tar.xz libiconv-1.14-4-mingw32-dll-2.tar.xz libiconv-1.14-4-mingw32-html.tar.xz libiconv-1.14-4-mingw32-lang.tar.xz libiconv-1.14-4-mingw32-lic.tar.xz libiconv-1.14-4-mingw32-man.tar.xz libisl-0.21-2-mingw32-dll-21.tar.xz liblzma-4.999.9beta_20100401-1-msys-1.0.13-dll-1.tar.gz liblzma-5.2.5-2-mingw32-dev.tar.xz liblzma-5.2.5-2-mingw32-dll-5.tar.xz libmingwex-5.4.2-mingw32-dev.tar.xz libmingwex-5.4.2-mingw32-dll-4.tar.xz libmpc-1.1.0-1-mingw32-dll-3.tar.xz libmpfr-4.0.2-1-mingw32-dll-6.tar.xz libncurses-6.2-2-mingw32-dev.tar.xz libncurses-6.2-2-mingw32-dll-6.tar.xz libobjc-9.2.0-2-mingw32-dll-4.tar.xz libpthread-2.8.0-3-mingw32-dll-2.tar.lzma libquadmath-9.2.0-2-mingw32-dll-0.tar.xz libquadmath-9.2.0-2-mingw32-info.tar.xz libssp-9.2.0-2-mingw32-dll-0.tar.xz libstdc++-9.2.0-2-mingw32-dll-6.tar.xz libz-1.2.11-1-mingw32-dev.tar.xz libz-1.2.11-1-mingw32-dll-1.tar.xz mingw-get-0.6.3-mingw32-pre-20170905-1-bin.tar.xz mingw-get-0.6.3-mingw32-pre-20170905-1-gui.tar.xz mingw-get-0.6.3-mingw32-pre-20170905-1-lic.tar.xz mingw-get-setup-0.6.3-mingw32-pre-20170905-1-dll.tar.xz mingw-get-setup-0.6.3-mingw32-pre-20170905-1-xml.tar.xz mingwrt-5.4.2-mingw32-dev.tar.xz mingwrt-5.4.2-mingw32-dll.tar.xz mingwrt-5.4.2-mingw32-lic.tar.xz mingwrt-5.4.2-mingw32-man.tar.xz mpc-1.1.0-1-mingw32-dev.tar.xz mpc-1.1.0-1-mingw32-info.tar.xz mpc-1.1.0-1-mingw32-lic.tar.xz mpfr-4.0.2-1-mingw32-dev.tar.xz mpfr-4.0.2-1-mingw32-doc.tar.xz mpfr-4.0.2-1-mingw32-info.tar.xz mpfr-4.0.2-1-mingw32-lic.tar.xz ncurses-6.2-2-mingw32-bin.tar.xz ncurses-6.2-2-mingw32-doc.tar.xz ncurses-6.2-2-mingw32-lic.tar.xz ncurses-6.2-2-mingw32-man.tar.xz pexports-0.48-mingw32-bin.tar.xz pexports-0.48-mingw32-doc.tar.xz pexports-0.48-mingw32-lic.tar.xz terminfo-6.2-2-mingw32-data.tar.xz w32api-5.4.2-mingw32-dev.tar.xz wsl-features-20190122-1-mingw32-cfg.tar.xz xz-5.2.5-2-mingw32-bin.tar.xz xz-5.2.5-2-mingw32-doc.tar.xz xz-5.2.5-2-mingw32-ext.tar.xz xz-5.2.5-2-mingw32-lang.tar.xz xz-5.2.5-2-mingw32-lic.tar.xz xz-5.2.5-2-mingw32-man.tar.xz zlib-1.2.11-1-mingw32-doc.tar.xz zlib-1.2.11-1-mingw32-lic.tar.xz zlib-1.2.11-1-mingw32-man.tar.xz
- 各パッケージの中には、bin/, include/, lib/ などが入っている。MinGWインストールフォルダの bin/, include/, lib/ にそのまま入れるのだろう。
- *bin* や *dll* が、実行に必要なファイルが入ってるパッケージ。
- *dev* が、そのライブラリを使ってコンパイル作業をする際に必要になるパッケージ。
- *doc* や *man* は、おそらくドキュメント。無くてもなんとかなりそう。
- *lic* は、ライセンス文書。これも無くてもなんとかなりそう。
- *lang* は、多言語対応用のリソースだろうか。英語のメッセージで十分なら無くてもどうにか。
つまり、上記のパッケージファイルをどうにか入手して、解凍して、SourceForge版のファイル群と差し替えてやれば、OSDN版 MinGW 相当になるのではないのかなと…。考えが甘いだろうか…?
◎ ミラーサーバについて :
OSDN版のパッケージは他のサーバでミラーリングしてないのだろうか。ググってみたら、以下のメモに遭遇。ありがたや。
_OSDNのミラーコンテンツ 2023/11/19
日本国内のサーバに限れば、IIJ と JAIST に残ってる可能性があるらしい。ありがたや。これは助かりそう。
_https://ftp.iij.ad.jp/pub/osdn.jp/storage/g/m/mi/mingw/
_https://ftp.jaist.ac.jp/pub/sourceforge.jp/storage/g/m/mi/mingw/
この中から、前述のファイル群を探し出して入手していけば、どうにかなるのかな…。いや、分からんけど…。
でも、探し出すの、どう考えても面倒臭いよな…。どうせ全部で100MBも無いから、 _上記のファイル群をzipにして、 試しに OneDrive に置いてみます。問題があったら削除しますので…。まあ、上記のミラーサーバのディレクトリ内を探していけば全く同じものが入手できるだろうけど。
_OSDNのミラーコンテンツ 2023/11/19
日本国内のサーバに限れば、IIJ と JAIST に残ってる可能性があるらしい。ありがたや。これは助かりそう。
_https://ftp.iij.ad.jp/pub/osdn.jp/storage/g/m/mi/mingw/
_https://ftp.jaist.ac.jp/pub/sourceforge.jp/storage/g/m/mi/mingw/
この中から、前述のファイル群を探し出して入手していけば、どうにかなるのかな…。いや、分からんけど…。
でも、探し出すの、どう考えても面倒臭いよな…。どうせ全部で100MBも無いから、 _上記のファイル群をzipにして、 試しに OneDrive に置いてみます。問題があったら削除しますので…。まあ、上記のミラーサーバのディレクトリ内を探していけば全く同じものが入手できるだろうけど。
◎ MinGW以外の選択肢 :
MinGW が入手できなくなりそうで困ったなと書いてみたけど。今現在、Windows上で gcc/g++ (C/C++コンパイラ) を使いたいなら、MSYS2 を導入するのが妥当な気もする。MSYS2 なら、32bit版のみ対応の MinGW と違って、i686版(32bit版)、x86_64版(64bit) も選べるし。MinGW と比べて、より多くのビルド済みパッケージが用意されていて便利な面もあるし。
_MSYS2
あるいは、そもそも、「Windows上で C++ を使いたい!」なら、Microsoft が公式に用意してくれている Visual Studio Community を利用するのが無難な気もする。個人利用や教育/学術目的なら無料で利用させてもらえるし…。
_Visual Studio Tools のダウンロード - Windows、Mac、Linux 用の無料インストール
自分の場合、gcc/g++ を使って Windows用のスクリーンセーバを作ってみたいと思ってしまったので、スクリーンセーバ用ライブラリ libscrnsave.a が用意されている MinGW にこだわっているけれど。 *1
そんなわけで、「OSDNが死んだら Windows上で無料で利用できる C/C++コンパイラが無くなってしまう!」という状態ではないわけで。
とは言え、「昔は新しいパッケージを利用することもできたけど、今は利用できない」という状況もなんだかなあ、と…。いや、単に新しいパッケージを使いたいだけなら MSYS2 を使えばいいんだろうけど…。
_MSYS2
あるいは、そもそも、「Windows上で C++ を使いたい!」なら、Microsoft が公式に用意してくれている Visual Studio Community を利用するのが無難な気もする。個人利用や教育/学術目的なら無料で利用させてもらえるし…。
_Visual Studio Tools のダウンロード - Windows、Mac、Linux 用の無料インストール
自分の場合、gcc/g++ を使って Windows用のスクリーンセーバを作ってみたいと思ってしまったので、スクリーンセーバ用ライブラリ libscrnsave.a が用意されている MinGW にこだわっているけれど。 *1
- 「スクリーンセーバ? そんなもの作らないよ」と言うことなら MSYS2 で問題無し。むしろ MSYS2 のほうが便利かも。
- 「Microsoft公式の開発ツールを使えば妙なところでハマらなくて済むだろう」「利用者も圧倒的に多いから参考資料も多い」と言うことなら Visual Studio Community を選ばない理由は無いし。
- バージョンが古くてもいいなら、まだ SourceForge版 MinGW が入手できる。というか自分も今現在 SourceForge版 MinGW で作業してるし…。
そんなわけで、「OSDNが死んだら Windows上で無料で利用できる C/C++コンパイラが無くなってしまう!」という状態ではないわけで。
とは言え、「昔は新しいパッケージを利用することもできたけど、今は利用できない」という状況もなんだかなあ、と…。いや、単に新しいパッケージを使いたいだけなら MSYS2 を使えばいいんだろうけど…。
*1: MSYS2 に入ってる libscrnsave.a は中身が空なので…。
[ ツッコむ ]
#2 [basic] FreeBASICとSDL2_mixerでoggを再生できるか試した
Windows10 x64 22H2 + FreeBASIC 1.10.1 32bit でサウンドを鳴らしてみたい。できれば ogg (Ogg Vorbis)を再生したい。
Ogg Vorbis (正確には Vorbis) というのは非可逆圧縮の音声ファイル。mp3 みたいなもの。mp3 と違ってライセンスが緩く、ギャップレス再生もできるので、mp3 よりもゲーム制作に利用し易い。
_Vorbis - Wikipedia
方法についてググってみたら以下の解説記事に遭遇。
_Simplest code to play MP3 or OGG with SDL - freebasic.net
_Windows Ini File FreeBASIC
SDL2 と SDL2_mixer を利用すれば鳴らすことができるようだなと…。
ちなみに、FreeBASIC は、標準状態では beep を鳴らすことしかできないらしい。NEC PC-8001レベルだなあ…。
_FaqPgrtlib
Ogg Vorbis (正確には Vorbis) というのは非可逆圧縮の音声ファイル。mp3 みたいなもの。mp3 と違ってライセンスが緩く、ギャップレス再生もできるので、mp3 よりもゲーム制作に利用し易い。
_Vorbis - Wikipedia
方法についてググってみたら以下の解説記事に遭遇。
_Simplest code to play MP3 or OGG with SDL - freebasic.net
_Windows Ini File FreeBASIC
SDL2 と SDL2_mixer を利用すれば鳴らすことができるようだなと…。
ちなみに、FreeBASIC は、標準状態では beep を鳴らすことしかできないらしい。NEC PC-8001レベルだなあ…。
_FaqPgrtlib
◎ SDL2関連ファイルの入手 :
oggを再生するために、SDL2 と SDL2_mixer を FreeBASIC に導入しないといけない。
当初、SDL2-devel-2.29.2-mingw.zip と SDL2_mixer-devel-2.8.0-mingw.zip を入手して、中に入っていた .dll や .a を利用しようとしたのだけど、それでは正常動作してくれなかった。
FreeBASICインストールフォルダ/inc/SDL2/*.bi を眺めたところ、各ファイルの最初のあたりに、利用を想定している SDL2 のバージョンが書いてあることに気づいた。FreeBASIC 1.10.1 の時点では、それぞれ以下のバージョンが推奨されているらしい。
これらのバージョンを入手しないと…。以下からSDL2関連ファイルを入手する。
_SDL2 - Index of /release
_SDL2_image - Index of /projects/SDL_image/release
_SDL2_mixer - Index of /projects/SDL_mixer/release
_SDL2_net - Index of /projects/SDL_net/release
_SDL2_ttf - Index of /projects/SDL_ttf/release
入手するファイルは以下。ファイル名に mingw と記載されてるファイルを入手する。今回は SDL2 と SDL2_mixer を利用できればいいので他のファイルは要らんのだけど、ついでなので…。
解凍すると、中には i686-w64-mingw32/, x86_64-w64-mingw32/ が入っている。i686が32bit版、x86_64 が64bit版。
*.dll と *.a、どちらもプロジェクトフォルダにコピーしてしまってもいいし、あるいは、*.a を、FreeBASICインストールフォルダ/lib/win??/ にコピーしてしまってもいい。ただ、SDL2 を使っているプログラムを実行する際は、同じフォルダ内に SDL2関係の .dll が必要になる、と思う。たぶん。
今回必要になるDLLファイルは以下になる。
コンパイル時に必要になりそうな .a ファイルは以下。
当初、SDL2-devel-2.29.2-mingw.zip と SDL2_mixer-devel-2.8.0-mingw.zip を入手して、中に入っていた .dll や .a を利用しようとしたのだけど、それでは正常動作してくれなかった。
FreeBASICインストールフォルダ/inc/SDL2/*.bi を眺めたところ、各ファイルの最初のあたりに、利用を想定している SDL2 のバージョンが書いてあることに気づいた。FreeBASIC 1.10.1 の時点では、それぞれ以下のバージョンが推奨されているらしい。
SDL.bi : SDL2-2.0.14 SDL_image.bi : SDL2_image-2.0.5 SDL_Mixer.bi : SDL2_mixer-2.0.4 SDL_net.bi : SDL2_net-2.0.1 SDL_ttf.bi : SDL2_ttf-2.0.15 SDL2_gfx_framerate.bi : SDL2_gfx-1.0.4 SDL2_gfx_imageFilter.bi : SDL2_gfx-1.0.4 SDL2_gfx_primitives.bi : SDL2_gfx-1.0.4 SDL2_gfx_primitives_font.bi : SDL2_gfx-1.0.4 SDL2_gfx_rotozoom.bi : SDL2_gfx-1.0.4
これらのバージョンを入手しないと…。以下からSDL2関連ファイルを入手する。
_SDL2 - Index of /release
_SDL2_image - Index of /projects/SDL_image/release
_SDL2_mixer - Index of /projects/SDL_mixer/release
_SDL2_net - Index of /projects/SDL_net/release
_SDL2_ttf - Index of /projects/SDL_ttf/release
入手するファイルは以下。ファイル名に mingw と記載されてるファイルを入手する。今回は SDL2 と SDL2_mixer を利用できればいいので他のファイルは要らんのだけど、ついでなので…。
SDL2-devel-2.0.14-mingw.tar.gz SDL2_image-devel-2.0.5-mingw.tar.gz SDL2_mixer-devel-2.0.4-mingw.tar.gz SDL2_net-devel-2.0.1-mingw.tar.gz SDL2_ttf-devel-2.0.15-mingw.tar.gz
解凍すると、中には i686-w64-mingw32/, x86_64-w64-mingw32/ が入っている。i686が32bit版、x86_64 が64bit版。
- bin/*.dll が実行に必要なDLLファイル。
- lib/*.a が、コンパイル時に必要になるライブラリファイル。
*.dll と *.a、どちらもプロジェクトフォルダにコピーしてしまってもいいし、あるいは、*.a を、FreeBASICインストールフォルダ/lib/win??/ にコピーしてしまってもいい。ただ、SDL2 を使っているプログラムを実行する際は、同じフォルダ内に SDL2関係の .dll が必要になる、と思う。たぶん。
今回必要になるDLLファイルは以下になる。
# SDL2 SDL2.dll sdl2-config # SDL2_mixer libFLAC-8.dll libmodplug-1.dll libmpg123-0.dll libogg-0.dll libopus-0.dll libopusfile-0.dll libvorbis-0.dll libvorbisfile-3.dll SDL2_mixer.dll
コンパイル時に必要になりそうな .a ファイルは以下。
# SDL2 libSDL2.a libSDL2.dll.a libSDL2_test.a libSDL2main.a # SDL2_mixer libSDL2_mixer.a libSDL2_mixer.dll.a
◎ サンプルソース :
前述の解説記事からコピペして、サンプルソースを作成。
_ogg_play_sdl2.bas
今回は、bgm.ogg というファイルを読み込ませている。
_bgm.ogg
fbc ogg_play_sdl2.bas でコンパイル。ogg_play_sdl2.exe が生成された。
実行してみると以下のメッセージが表示される。
1, 2, 3, 4, Spaceキーで、oggを停止、再生、ポーズ、リジューム(ポーズ解除)、プログラムの終了ができた。
ということで、FreeBASIC + SDL2 + SDL2_mixer を使えば、ogg (Ogg Vorbis) が再生できると分かった。ゲームのBGMとして鳴らせそうではあるなと…。しかし、BGMはこれでなんとかなるとして、SE はどうすれば…? 複数のチャンネルで鳴らせないと話にならないよな…。
_ogg_play_sdl2.bas
' ogg play with SDL2 and SLD2_mixer ' request : SDL2 2.0.14, SDL2_mixer 2.0.4 #include "SDL2/SDL_mixer.bi" dim mymusic as Mix_Music ptr chdir exepath() Mix_OpenAudio(44100, MIX_DEFAULT_FORMAT, 2, 4096) ' Here your music file in *.mp3 or *.ogg mymusic = Mix_LoadMUS("bgm.ogg") Mix_VolumeMusic(128) ' 128 is the maximum volume ' 0 play once / -1 play infinit loop ' Mix_PlayMusic(mymusic, 0) print "Press 1 to stop music." print "Press 2 to play music." print "Press 3 to pause music." print "Press 4 to resume music." print "Press space key to exit program." Dim As Boolean running = True While running Dim As String k = inkey$ Select Case k Case "1": Mix_HaltMusic() Case "2": Mix_PlayMusic(mymusic, -1) Case "3": Mix_PauseMusic() Case "4": Mix_ResumeMusic() Case " ": running = False End Select sleep 200 Wend FINALIZATION: Mix_CloseAudio()
今回は、bgm.ogg というファイルを読み込ませている。
_bgm.ogg
fbc ogg_play_sdl2.bas でコンパイル。ogg_play_sdl2.exe が生成された。
実行してみると以下のメッセージが表示される。
> ogg_play_sdl2.exe Press 1 to stop music. Press 2 to play music. Press 3 to pause music. Press 4 to resume music. Press space key to exit program.
1, 2, 3, 4, Spaceキーで、oggを停止、再生、ポーズ、リジューム(ポーズ解除)、プログラムの終了ができた。
ということで、FreeBASIC + SDL2 + SDL2_mixer を使えば、ogg (Ogg Vorbis) が再生できると分かった。ゲームのBGMとして鳴らせそうではあるなと…。しかし、BGMはこれでなんとかなるとして、SE はどうすれば…? 複数のチャンネルで鳴らせないと話にならないよな…。
◎ 余談。SDL1.xについて :
FreeBASIC は、SDL (SDL 1.x) と SDL2 (2.x) を使えるようで、今回は SDL2 を使ったわけだけど。
先日、SDL (SDL 1.x) を利用できるか実験したときは、MSYS2 の mingw32/ 以下から *.a を持ってきて試してみたら動いてしまったわけで…。アレって、SDL 1.x のバージョンは合ってたのだろうか? 不安になってきたので調べてみた。
FreeBASICインストールフォルダ/inc/SDL/*.bi に記述されてる、SDL 1.x の推奨バージョンは以下になっていた。
MSYS2側のパッケージのバージョンは以下になっていた。(x:/msys64/var/cache/pacman/pkg/mingw-w64-i686-SDL*)
SDL_gfx 以外は、たまたまバージョンが一致していた模様。 *1 だからすんなり動いてしまったのかもしれないな…。
先日、SDL (SDL 1.x) を利用できるか実験したときは、MSYS2 の mingw32/ 以下から *.a を持ってきて試してみたら動いてしまったわけで…。アレって、SDL 1.x のバージョンは合ってたのだろうか? 不安になってきたので調べてみた。
FreeBASICインストールフォルダ/inc/SDL/*.bi に記述されてる、SDL 1.x の推奨バージョンは以下になっていた。
SDL.bi : SDL-1.2.15 SDL_image.bi : SDL_image-1.2.12 SDL_mixer.bi : SDL_mixer-1.2.12 SDL_net.bi : SDL_net-1.2.8 SDL_ttf.bi : SDL_ttf-2.0.11 SDL_gfx_framerate.bi : SDL_gfx-2.0.26 SDL_gfx_imageFilter.bi : SDL_gfx-2.0.26 SDL_gfx_primitives.bi : SDL_gfx-2.0.26 SDL_gfx_primitives_font.bi : SDL_gfx-2.0.26 SDL_gfx_rotozoom.bi : SDL_gfx-2.0.26
MSYS2側のパッケージのバージョンは以下になっていた。(x:/msys64/var/cache/pacman/pkg/mingw-w64-i686-SDL*)
mingw-w64-i686-SDL-1.2.15+r419+gef3a6c05-1-any.pkg.tar.zst mingw-w64-i686-SDL_image-1.2.12-8-any.pkg.tar.zst mingw-w64-i686-SDL_mixer-1.2.12-9-any.pkg.tar.zst mingw-w64-i686-SDL_net-1.2.8-3-any.pkg.tar.zst mingw-w64-i686-SDL_ttf-2.0.11-6-any.pkg.tar.zst mingw-w64-i686-SDL_gfx-2.0.27-1-any.pkg.tar.zst
SDL_gfx 以外は、たまたまバージョンが一致していた模様。 *1 だからすんなり動いてしまったのかもしれないな…。
*1: SDL 1.x の最終バージョンだろうから、一致するのは当たり前だろうか…。
[ ツッコむ ]
以上、1 日分です。