© 法政大学 理工学部 創生科学科 小林一行実験室

ODEの実行法
まず、ODEのソースコードを取ってくる。
ode-0.6-src.zip
を解凍する。
フォルダをc:\に移動する。
つまり、c:\ode-0.6とする。
環境変数に追加する。マイコンピュータを右クリックし「プロパティ」の「詳細設定」の環境変数のincludeの最後にC:\ode-0.6\includeを追加する。
VisualC++がインストールされている場合には、このようにする。

C:\Program Files\Microsoft Visual Studio\VC98\atl\include;C:\Program Files\Microsoft Visual Studio\VC98\mfc\include;C:\Program Files\Microsoft Visual Studio\VC98\include;C:\ode-0.6\include

環境変数のlibには、C:\ode-0.6\buildを追加する。同様に

C:\Program Files\Microsoft Visual Studio\VC98\mfc\lib;C:\Program Files\Microsoft Visual Studio\VC98\lib;C:\ode-0.6\build

一度、ライブラリを再構築する。
この場合には、統合環境を使う。まず、
C:\ode-0.6\build\vs6のode.dswを実行する。
ビルドのバッチビルドを選択し、ビルドを行う。
次に、コマンドウィンドウを起動し、

cd c:\ode-0.6\ode\test

に移動し、

cl test_buggy.cpp

ただし、これだけではエラーが出るので、

C:\ode-0.6\ode\test>cl test_buggy.cpp ode.lib drawstuff.lib winmm.lib user32.lib opengl32.lib glaux.lib glu32.lib gdi32.lib

これは、以下のコマンドをプログラム中に追加したのと同じである。

#pragma comment(lib,"ode.lib")
#pragma comment(lib,"drawstuff.lib")
#pragma comment(lib,"winmm.lib")
#pragma comment(lib,"user32.lib")
#pragma comment(lib,"opengl32.lib")
#pragma comment(lib,"glaux.lib")
#pragma comment(lib,"glu32.lib")
#pragma comment(lib,"gdi32.lib")

しかし、これでもエラーがでる。この理由は、共有ライブラリを使用しているため、リンク時にライブラリを指定する必要があるからである。ライブラリの選択オプションは、

MSVCRT.lib 共有DLLでMFCを使用 Release /MD
MSVCRTd.lib 共有DLLでMFCを使用 Debug /MDd
LIBCMT.lib スタティックライブラリでMFCを使用 Release /MT
LIBCMTd.lib スタティックライブラリでMFCを使用 Debug /MTd
LIBC.lib 標準Windowsライブラリを使用 Release /ML
LIBCd.lib 標準Windowsライブラリを使用 Debug /MLd

となっている。デフォルトでは、/MDオプションをつければ、ワーニングが出るがコンパイルできるようになる。

C:\ode-0.6\ode\test>cl test_buggy.cpp ode.lib drawstuff.lib winmm.lib user32.lib opengl32.lib glaux.lib glu32.lib gdi32.lib /MD

しかし、これでもode.dllがないためエラーが出てしまい実行できない。そこで、ode.dllを
c:\ode-0.6\ode\testのフォルダにコピーをしておく。
また、
C:\ode-0.6\drawstuff\src
の中の、resources.rcとresource.hを
c:\ode-0.6\ode\testのフォルダにコピーし、
test_buggy.cppの中の
fn.path_to_textures = "../../drawstuff/textures";

#include "resources.h"
fn.path_to_textures = "c:/ode-0.6/drawstuff/textures";
に変更

C:\ode-0.6\ode\test>rc resources.rc
C:\ode-0.6\ode\test>cl test_buggy.cpp ode.lib drawstuff.lib winmm.lib user32.lib opengl32.lib glaux.lib glu32.lib gdi32.lib /MD resources.res

とすることで、コンパイルができる。
まとめると、コンパイルしたいファイルに、

#pragma comment(lib,"ode.lib")
#pragma comment(lib,"drawstuff.lib")
#pragma comment(lib,"winmm.lib")
#pragma comment(lib,"user32.lib")
#pragma comment(lib,"opengl32.lib")
#pragma comment(lib,"glaux.lib")
#pragma comment(lib,"glu32.lib")
#pragma comment(lib,"gdi32.lib")
#include "resource.h"

を追加し、

fn.path_to_textures = "c:/ode-0.6/drawstuff/textures";

と変更、

それにコンパイルするときは、

cl test_buggy.cpp /MD resources.res

とすればよい。