HSPからBASS audio libraryを使いたいんじゃ。2
今回はコンパイルする会です。
こ↑こ↓https://www.un4seen.com/からDLしたZIPに含まれているサンプルソースをコンパイルしていくぞ。
コンパイラはMinGW GCCだ。
標的はbasstest。
使うファイルは、basstest.c basstest.rcの二つと、ここにライブラリのヘッダbass.h。makefileは難しいのでパス。(脳死)
rcってなんじゃらほいってことで、調べたよ。
リソースファイルって言うらしいね、もう深いことは考えずに、コンパイルする方法だけ探したよ。
windres -i basstest.rc -o rs.o
でオブジェクトファイルにして、
gcc -c basstest.c
で、こっちも・・・
んおお、なんかエラーでよった。
basstest.c:297:3: error: unknown type name 'INITCOMMONCONTROLSEX'
INITCOMMONCONTROLSEX cc = { sizeof(cc), ICC_BAR_CLASSES };
^~~~~~~~~~~~~~~~~~~~
ああ、SEXとか言っちゃったから・・・
ね、ということで、
INITCOMMONCONTROLSEXを検索してみた。
完璧これっすね。もうコンパイルできりゃええので、これを参考にIEバージョンの定数かなんかを冒頭で#define _WIN32_IE 0x0300しまして、通りました。
gcc basstest.o rs.o -L. bass.lib -o basstest.exe
肝心のライブラリも忘れずに。よし、大丈夫。
basstest.o:basstest.c:(.text+0x1e9): undefined reference to `GetOpenFileNameA@4'
basstest.o:basstest.c:(.text+0x560): undefined reference to `GetOpenFileNameA@4'
basstest.o:basstest.c:(.text+0x8d7): undefined reference to `GetOpenFileNameA@4'
basstest.o:basstest.c:(.text+0x1088): undefined reference to `InitCommonControlsEx@4'
おおっ!?
GetOpenFileNameAはcomdlg32.libに、
InitCommonControlsExはcomctl32.libに含まれている様です。
GCCは標準でその辺入ってるはずなので、-lcomdlg32 -lcomctl32。
勝手にリンクしてくれてもいいのに…。しない理由があるのかな。
gcc basstest.o basstestres.o -L. bass.lib -lcomdlg32 -lcomctl32
gcc basstest.o basstestres.o -L. bass.lib -lcomdlg32 -lcomctl32
Process started (PID=20560) >>>
<<< Process finished (PID=20560). (Exit code 0)
にっこぉぉぉぉぉり顔。
-mwindowsでプロンプトも消せるよ。
次回、何するかわからん!!
エラーが出てら喜ぼう!!レッツ・コンパイル!!