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でプロンプトも消せるよ。

次回、何するかわからん!!
エラーが出てら喜ぼう!!レッツ・コンパイル!!

この記事が気に入ったらサポートをしてみませんか?