おいふぉりーのぶろぐ

きっと趣味のブログに違いないです!!

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
  1. --/--/--(--) --:--:--|
  2. スポンサー広告

[ODE]ODE を Visual Studio 2010 で使う

前に買っていた "簡単!実践!ロボットシミュレーション - Open Dynamics Engineによるロボットプログラミング" を久々に手にしてみました.

ということで,まずは ODE (Open Dynamics Engine) の開発環境を整える必要がありますね. ODE はソースで配布されているので, 自前でライブラリを用意しましょう. (公式サイトには ODE-bin パッケージという Windows 用のバイナリがあるよ的なことが書かれているんですが, 見つけられませんでした) 今回は ode-0.11.1.zip をダウンロードして, D:\lib\ode-0.11.1 に展開して作業を進めます.

1. ODE 本体のビルド

D:\lib\ode-0.11.1\build の中にある premake4 を実行して,ODE のライブラリ ビルドのソリューション ファイルを作成します. コマンドラインから次のコマンドを実行します.

> premake4 vs2008

premake4 は Visual Studio 2008 までしか対応してないので, 引数は上記の通りで OK です. ちなみに, premake4 の使い方は premake4 --help で見られます.

コマンドの実行の結果 D:\lib\ode-0.11.1\build\vs2008 の中に ode.sln というソリューション ファイルが出来上がるので, Visual Studio 2010 で開きます. このとき, プロジェクトの変換ウィザードが自動的に起動するので, Visual Studio 2010 用に変換します.

ode.sln では, 下記のような構成でビルドを実行することが出来るようになっています.
  DebugDoubleDLL
  DebugDoubleLib ← デバッグ, dReal は double 型, スタティックリンク
  DebugSingleDLL
  DebugSingleLib
  ReleaseDoubleDLL
  ReleaseDoubleLib ← リリース, dReal は double 型, スタティックリンク
  ReleaseSingleDLL
  ReleaseSingleLib

dReal というのは, ODE で演算に使われる型のようです. どの構成を使うかは好みですが, 私は dReal を double 型, スタティックリンクのデバック構成とリリース構成を選択して, それぞれビルドしました.

いくつか警告が出ますが, 次の 2 つのライブラリ ファイルが出力されます.
  D:\lib\ode-0.11.1\lib\DebugDoubleLib\ode_doubled.lib
  D:\lib\ode-0.11.1\lib\ReleaseDoubleLib\ode_double.lib

2. DrawStuff のビルド

ODE には OpenGL を使った, DrawStuff と呼ばれる簡単な描画用のライブラリが含まれています. このライブラリのビルド用のプロジェクトは用意されていないようなので, 自分で用意します. ode.sln に, 新しくプロジェクトを追加することにします. 追加時の設定は次のようにします. ここでは, ODE のビルドと同じようにスタティック リンクすることにします.
  プロジェクトの種類: Win32プロジェクト
  名前: drawstuff
  場所: D:\lib\ode-0.11.1\build\vs2008
  アプリケーションの種類: スタティック ライブラリ
  プリコンパイル済みヘッダー: チェックを外す

作成したプロジェクトに次のファイルを追加します.
  D:\lib\ode-0.11.1\drawstuff\src\drawstuff.cpp
  D:\lib\ode-0.11.1\drawstuff\src\internal.h
  D:\lib\ode-0.11.1\drawstuff\src\resource.h
  D:\lib\ode-0.11.1\drawstuff\src\resources.rc
  D:\lib\ode-0.11.1\drawstuff\src\windows.cpp

次に, プロジェクトのプロパティを編集します. Debug 構成と Release 構成をそれぞれ次のように設定します.

●Debug 構成
  [全般][文字セット]: マルチ バイト文字セットを使用する
  [全般][出力ディレクトリ]: ../../../lib/DebugDoubleLib/
  [全般][中間ディレクトリ]: obj/Debug/
  [全般][ターゲット名]: drawstuffd
  [C/C++][全般][追加のインクルード ディレクトリ]: .../../../include;../../../ode/src
  [C/C++][プリプロセッサ][プリプロセッサの定義]: WIN32;_DEBUG;_LIB;dDOUBLE;%(PreprocessorDefinitions) ← dDOUBLE を追加する (なくても大丈夫かも)

●Release 構成
  [全般][文字セット]: マルチ バイト文字セットを使用する
  [全般][出力ディレクトリ]: ../../../lib/ReleaseDoubleLib/
  [全般][中間ディレクトリ]: obj/Release/
  [全般][ターゲット名]: drawstuff
  [C/C++][全般][追加のインクルード ディレクトリ]: .../../../include;../../../ode/src
  [C/C++][プリプロセッサ][プリプロセッサの定義]: WIN32;_LIB;dDOUBLE;%(PreprocessorDefinitions) ← dDOUBLE を追加する (なくても大丈夫かも)

設定したら, Debug 構成と Release 構成でそれぞれビルドします.

いくつか警告が出ますが, 次の 2 つのライブラリ ファイルが出力されます.
  D:\lib\ode-0.11.1\lib\DebugDoubleLib\drawstuffd.lib
  D:\lib\ode-0.11.1\lib\ReleaseDoubleLib\drawstuff.lib

なお, DrawStuff にはリソースが含まれていますが, スタティック ライブラリにはリソースを含むことはできないので, 次の 2 つのコンパイル済みリソースを D:\lib\ode-0.11.1\lib の方にコピーしておいて, こっちもリンクすることにします.

  D:\lib\ode-0.11.1\build\vs2008\drawstuff\obj\Debug\resources.res → D:\lib\ode-0.11.1\lib\DebugDoubleLib\drawstuffd.res
  D:\lib\ode-0.11.1\build\vs2008\drawstuff\obj\Release\resources.res → D:\lib\ode-0.11.1\lib\ReleaseDoubleLib\drawstuff.res

3. 自分のプロジェクトの設定

以上で ODE のビルドが完了したので, 次はビルドしたライブラリの使い方についてです.

まず, 環境変数 ODE_BASE を追加し, その値を D:\lib\ode-0.11.1 とします. プロジェクトの設定で直接 ODE のパスを打ち込むこともできますが, 開発環境のお引越しでパスが変わること等を想定すると, 環境変数にパスを設定し, プロジェクトの設定で環境変数を使ったほうが良いでしょう.

それでは, 新しくプロジェクトを作成します.

ODE のライブラリの設定は, プロパティ シートに設定します. 一度, プロパティ シートを作ってしまえば, 次にプロジェクトを作るときに, プロパティ シートを読み込むだけで済みます. プロパティ シートを Debug 構成と Release 構成にそれぞれ追加します. ファイル名は適当に決めてください.

●プロパティシート (Debug 構成)
  [C/C++][全般][追加のインクルード ディレクトリ]: $(ODE_BASE)/include;%(AdditionalIncludeDirectories)
  [C/C++][プリプロセッサ][プリプロセッサの定義]: dDOUBLE;%(PreprocessorDefinitions)
  [リンカ][全般][追加のライブラリ ディレクトリ]: $(ODE_BASE)/lib/DebugDoubleLib;%(AdditionalLibraryDirectories)
  [リンカ][入力][追加の依存ファイル]: ode_doubled.lib;drawstuffd.res;drawstuffd.lib;opengl32.lib;glu32.lib;winmm.lib;%(AdditionalDependencies)

●プロパティシート (Release 構成)
  [C/C++][全般][追加のインクルード ディレクトリ]: $(ODE_BASE)/include;%(AdditionalIncludeDirectories)
[C/C++][プリプロセッサ][プリプロセッサの定義]: dDOUBLE;%(PreprocessorDefinitions)
[リンカ][全般][追加のライブラリ ディレクトリ]: $(ODE_BASE)/lib/ReleaseDoubleLib;%(AdditionalLibraryDirectories)
[リンカ][入力][追加の依存ファイル]: ode_double.lib;drawstuff.res;drawstuff.lib;opengl32.lib;glu32.lib;winmm.lib;%(AdditionalDependencies)

以上で, ODE のプログラムをビルドする準備ができました. 後は ODE の適当なサンプル ソースを打ち込んで, ビルドしてみて, うまくいけば OK です.


追記

ODE をビルドするとき,リリースの構成 (ReleaseDoubleLib) で,プリプロセッサ dNODEBUG も追加したほうが良いようです.追加すると,実効速度が向上します.元々付属しているビルド用のプロジェクトには,この指定がないようです.

  1. 2010/07/19(月) 16:48:53|
  2. ソフトウェア開発
  3. | トラックバック:0
  4. | コメント:0
<<足踏みセンサー@久々に電子工作 | ホーム | [玄箱T4]ファイルサーバーSambaの設定>>

コメント

コメントの投稿


管理者にだけ表示を許可する

トラックバック

トラックバックURLはこちら
http://tm86eublog.blog42.fc2.com/tb.php/253-449e50f8
この記事にトラックバックする(FC2ブログユーザー)

来客数

プロフィール

Euphorie

Author:Euphorie
"おいふぉりー"って呼んでくださいな☆
ハードウェアとかソフトウェアとかの開発に興味があったり。。。
連絡先は上の画像。

最近の記事

最近のコメント

最近のトラックバック

月別アーカイブ

カテゴリー

ブロとも申請フォーム

この人とブロともになる

ブログ内検索

RSSフィード

リンク

このブログをリンクに追加する

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。