今日の雑記

生きることでいっぱいいっぱい

○×△□の迷宮某移植版

というかあまり伏字になってませんね(<想像できる人にとっては)。
まあ、そういうのがあったので、試しにダウンロードしてビルドしてみた。のが今から3ヶ月前くらいかしら。
んでそん時はうまくいかなかったのでちょっと放置。今日改めてやってみたところ、何とかうまく動いた。
動いた、が、移植度がまあいまいちな感じ。目移植っぽい(しかも外人だ)からしゃーない部分はある。
そういえば、今回初めて「SDL_sound」をビルドしてみた。音関係は今まで「SDL_mixer」一辺倒だったし。んで、結局これでかなり手間取った。全てと言っても良い。
要点をまとめると二つで、

  • oggデコーダがライブラリビルド時に「no」になっていたというか、configure 段階で「no」になるような感じになっていた。
  • アプリビルド時の依存関係の順番。

たったこんだけだった。あーもう。
最初の奴に関しては「config.log」みて「configure」いじって解決。
次の奴は「Makefile」の「LDFLAG」をあれこれいじって解決。
oggデコーダ」に関してはかなりはまった。
というか、そもそもは「アプリビルド時に失敗」する事に端を発してるんだけど、それも「hoge(<例えば関数)は既に定義され(てる/てない)よー」とか言われて、原因探ってたら「playsound」がビルドできてなくて、「やっぱこの時点でまずいのかー」と思い直して色々調べてて発覚した問題で、んで結論が先の「ogg が no」というのが原因。
その後「config.log」をボーっと眺めてたらテストリンク時に大量のエラーがーがーがー。「なんでですか?」と思って「configure」見てみたら「リンクすべきライブラリがリンクされていない」状態でテストされてて「そりゃうまくいくわけないよ」と。
具体的にはこんな感じだった。
...ちょっと ./configure タイム...。
まず「修正前」。

configure:21138: checking for vorbis_info_init in -lvorbis
configure:21174: gcc -o conftest.exe -O2 -I/usr/local/mingw32/include/   conftest.c -lvorbis  -L/usr/local/mingw32/lib -lmingw32 -lSDLmain -lSDL -mno-cygwin -mwindows >&5
/usr/local/mingw32/lib/libvorbis.a(info.o):info.c:(.text+0x47): undefined reference to `_oggpack_write'
/usr/local/mingw32/lib/libvorbis.a(info.o):info.c:(.text+0x86): undefined reference to `_oggpack_read'



(以後エラーがドバーっと続きます)

次に「修正後」。

configure:21138: checking for vorbis_info_init in -lvorbis
configure:21174: gcc -o conftest.exe -O2 -I/usr/local/mingw32/include/   conftest.c -lvorbis -logg   -L/usr/local/mingw32/lib -lmingw32 -lSDLmain -lSDL -mno-cygwin -mwindows >&5
configure:21180: $? = 0
configure:21198: result: yes

ちょっと解りにくいですが、下の方では「-logg」というのが追加されてます。これが解決の味噌。味噌じゃねえよ。