ことはじめ

ビルドしてちゃんと実行できる環境を作るのに手間取ったのでメモ。
環境はWindowsXP+VC9(2008 express edition)。


まず、うまくいかなかった例から。
ソースは、最新のリリース版2.75をダウンロードした。
http://code.google.com/p/bullet/downloads/list
解凍してmsvc/8/wksbullet.slnをvc9で読み込んでビルドする。ここまでは問題ない。
次に、先程ビルドしたライブラリを使ってサンプルコードの動作を確認しようとすると実行時にエラーが起きる。デバッガでは、addRigidBody関数の中の

collisionObject->getCollisionShape()->getAabb(trans,minAabb,maxAabb);

で止まる。NULLポインタのせいでもなさげだし、ライブラリ内部のことなので諦め。別のソースや別のビルド(debug, debug_dll)を試してみたところ同じところで落ちる。どうやらbulletの方に問題がある様子。
ビルドの仕方がよろしく無いのかと思いcmakeを使ってみることにした。
しかし、エラー

Cannot find source file "SpuMinkowskiPenetrationDepthSolver.h".  Tried

このバージョンは諦めた。


古いのを試そうかと思ったが、気が変わってbullet-2.76-beta-r1975をダウンロードしてきた。
今度は最初からcmakeを試してみる。
しかし、エラー。
libxmlが無いよと出た。確かに無い。2.75のExtra/LibXmlを2.76のExtraにコピー。再度、configureしてみた。slnの生成に成功した。後は、ソリューションの中のINSTALLプロジェクトを実行したら目的のディレクトリにincludeとlibが出てくるので、それを使うことでサンプルコードが問題ないなく動くことを確認できた。

結論

2.76-beta-r1975をcmakeでビルドしたのは動く。
(libxmlは別バージョンから調達する)

これでやっとbulletの中に入れる。