ODE講座5:Hello World ! ã“ã‚“ã«ã¡ã¯ã‚·ãƒŸãƒ¥ãƒ¬ãƒ¼ã‚·ãƒ§ãƒ³ã®ä¸–界
2008-7-10: dInitODE(), dCloseODE()ã®è¿½åŠ
ゲーム開発やãƒãƒœãƒƒãƒˆã®ç ”究者ã«ã‚‚使ã‚れã¦ã„るオープンソースã®ç‰©ç†è¨ˆç®—エンジンODE(Open Dynamics Engineã€ã‚ªãƒ¼ãƒ—ン ダイナミクスエンジン)をå¦ã¶ODE講座ã®5回目ã§ã™ã€‚
今回ã¯ODE(Open Dynamics Engine)を使ã£ãŸè¶…ç°¡å˜ãªã‚µãƒ³ãƒ—ルプãƒã‚°ãƒ©ãƒ を紹介ã—ã¾ã™ã€‚プãƒã‚°ãƒ©ãƒŸãƒ³ã‚°ã®æ•™ç§‘書ã§ã¯åˆã‚ã®ä¾‹é¡Œã¯Hello WorldãŒå®šç•ªã§ã™ã€‚ã“ã“ã§ã‚‚ãã†ã—ã¾ã—ょã†ã€‚

è½ä¸‹ã™ã‚‹èµ¤ã„林檎?上ã®ç”»åƒã¯ãã®ã‚¹ã‚¯ãƒªãƒ¼ãƒ³ã‚·ãƒ§ãƒƒãƒˆã§ã™ã€‚
ODEを使ã£ãŸã‚·ãƒŸãƒ¥ãƒ¬ãƒ¼ã‚·ãƒ§ãƒ³ã®æµã‚Œã‚’代表的ãªAPIã¨é–¢é€£ä»˜ã‘ã¦åˆ—挙ã—ã¾ã™ã€‚ODE-0.10ã‹ã‚‰dInitODE()ã§åˆæœŸåŒ–ã—,dCloseODE()ã§çµ‚了ã—ãªã‘れã°ã‚¨ãƒ©ãƒ¼ã«ãªã‚Šã¾ã™ï¼Ž
- æç”»ç”¨é–¢æ•°ãƒ‰ãƒãƒ¼ã‚¹ã‚¿ãƒƒãƒ•ã®è¨å®š
- カメラã®è¨å®š dsSetViewPoint()
- カメラã®è¨å®š dsSetViewPoint()
- ODEã®åˆæœŸåŒ– dInitODE()
- 動力å¦è¨ˆç®—ã®ä¸–界worldã®ç”Ÿæˆ dWorldCreate()
- é‡åŠ›åŠ é€Ÿåº¦ã®è¨å®š dWorldSetGravity()
- 剛体ã®ç”Ÿæˆ
- 質é‡ã®è¨å®š dBodySetMass()
- ä½ç½®ã®è¨å®š dBodySetPosition()
- å§¿å‹¢ã®è¨å®š dBodySetRotation()
- 質é‡ã®è¨å®š dBodySetMass()
- シミュレーションループ(ã“ã®éƒ¨åˆ†ã¯ç¹°ã‚Šè¿”ã—実行ã•れる)
- 動力å¦è¨ˆç®—ã®å®Ÿæ–½ dWorldStep()
- シミュレーションã«å¿…è¦ãªå‡¦ç†ã‚’書ã
- 動力å¦worldã®ç ´å£Š dWorldDestroy
- ODEã®çµ‚了 dCloseODE()
- dBodyID dBodyCreate(dWorldID world)
剛体を作りã€ãã®ID番å·ã‚’戻り値ã¨ã—ã¦è¿”ã™ - const dReal *dBodyGetPosition(dBodyID body)
剛体bodyã®é‡å¿ƒä½ç½®ã‚’å–å¾—ã—ãã®ãƒã‚¤ãƒ³ã‚¿ã‚’返㙠- const dReal *dBodyGetRotation(dBodyID body)
回転行列をå–å¾—ã—ãã®ãƒã‚¤ãƒ³ã‚¿ã‚’返㙠- void dBodySetMass(dBodyID body, const dMass *mass)
剛体bodyã«è³ªé‡ãƒ‘ラメータmassã‚’è¨å®šã™ã‚‹ - void dBodySetPosition(dBodyID body, dReal x, dReal y, dReal z)
剛体bodyã®é‡å¿ƒã‚’絶対座標系(x,y,z)ã®ä½ç½®ã«è¨å®šã™ã‚‹ - void dBodySetRotation(dBodyID body, const dMatrix3 R)
剛体bodyを回転行列Rã§è¡¨ã™å§¿å‹¢ã«è¨å®šã™ã‚‹ - dGeomID dCreateBox(dSpaceID space, dReal lx, dReal ly, dReal lz)
spaceã«å„辺ã®é•·ã•(lx,ly,lz)ã®ç›´æ–¹ä½“ジオメトリを生æˆã™ã‚‹ - dGeomID dCreateCylinder(dSpaceID space, dReal r, dReal l)
åŠå¾„rã€é•·ã•lã®å††æŸ±ã‚¸ã‚ªãƒ¡ãƒˆãƒªã‚’生æˆã—ã€ãã®ID番å·ã‚’返㙠- dGeomID dCreatePlane(dSpaceID space ,dReal a, dReal b, dReal c, dReal d)
spaceã«ax+by+cz=dã®å¹³é¢ã‚¸ã‚ªãƒ¡ãƒˆãƒªã‚’生æˆã™ã‚‹ - void dGeomSetBody(dGeomID geom, dBodyID body)
物体ã®2ã¤ã®å±žæ€§ã§ã‚るジオメトリgeomã¨å‰›ä½“bodyを関連ã¥ã‘ã‚‹ - dSpaceID dHashSpaceCreate(0)
è¡çªè¨ˆç®—用スペースを生æˆã—ã€ãã®ID番å·ã‚’返㙠- void dJointGroupEmpty(dJointGroupID)
æŽ¥è§¦ç‚¹ãŒæ ¼ç´ã•れã¦ã„るジョイントグループを空ã«ã™ã‚‹ - void dJointAttach(dJointID joint, dBodyID body1, dBodyID dBody2)
剛体body1ã¨body2ã«ã‚¸ãƒ§ã‚¤ãƒ³ãƒˆjointã‚’å–り付ã‘ã‚‹ - dJointGroupID dJointGroupCreate(0)
接触点ã®ã‚°ãƒ«ãƒ¼ãƒ—ã‚’æ ¼ç´ã™ã‚‹ã‚¸ãƒ§ã‚¤ãƒ³ãƒˆã‚°ãƒ«ãƒ¼ãƒ—を生æˆã—ã€ãã®ID番å·ã‚’返㙠- void dMassSetBoxTotal(dMass *mass, dReal m, dReal lx, dReal ly, dReal lz)
サイズ(lx,ly,lz)ã€å…¨è³ªmã®ç›´æ–¹ä½“ã®è³ªé‡ãƒ‘ラメータmassを計算ã™ã‚‹ - void dMassSetCylinderTotal(dMass *mass, dReal m, int dir, dReal r, dReal l)
æ–¹å‘dir(1=x,2=y,3=z)ã€åŠå¾„rã€é•·ã•lã€å…¨è³ªé‡mã®å††æŸ±ã®è³ªé‡ãƒ‘ラメータmassを計算ã™ã‚‹ - void dMassSetZero(dMass *mass)
質é‡ãƒ‘ラメータmassã®è¦ç´ ã‚’0ã«åˆæœŸåŒ–ã™ã‚‹ - void dRFromAxisAndAngle(dMatrix3 R, dReal ax, dReal ay, dReal az, dReal angle)軸ベクトル(ax,ay,az)周りã«angle[rad]回転ã•ã›ãŸæ™‚ã®å›žè»¢è¡Œåˆ—Rを求ã‚ã‚‹
- void dSpaceCollide(dSpaceID space, void *data, dNearCallback *callback)
spaceã§è¡çªã™ã‚‹å¯èƒ½æ€§ã®ã‚ã‚‹2ã¤ã®ã‚¸ã‚ªãƒ¡ãƒˆãƒªã‚’é¸ã³å‡ºã—ã€å¼•æ•°ã®callback関数を呼ã³å‡ºã™ã€‚dataã¯callbacké–¢æ•°ã¸æ¸¡ã™ãƒ‡ãƒ¼ã‚¿ã¸ã®ãƒã‚¤ãƒ³ã‚¿ - dWorldID dWorldCreate()
物ç†è¨ˆç®—用ワールドを生æˆã—ã€ãã®ID(è˜åˆ¥)番å·ã‚’戻り値ã¨ã—ã¦è¿”ã™ - void dWorldDestroy(dWorldID world)
物ç†è¨ˆç®—用ワールドworldã‚’ç ´å£Šã™ã‚‹ - void dWorldSetGravity(dWorldID world, dReal x, dReal y, dReal z)
ワールドworldã«(x,y,z)[m/s2]ã®é‡åŠ›åŠ é€Ÿåº¦ã‚’è¨å®šã™ã‚‹ - void dWorldStep(dWorldID world, dReal step_size)
ワールドworldã®ã‚·ãƒŸãƒ¥ãƒ¬ãƒ¼ã‚·ãƒ§ãƒ³ã‚’1ステップ進ã‚る。2番目ã®å¼•æ•°step_sizeã¯ç©åˆ†ã®ã‚¹ãƒ†ãƒƒãƒ—時間[s] - void dsDrawBoxD(const double pos[3], const double R[12], const double sides[3])ä½ç½®posã«å›žè»¢è¡Œåˆ—Rã‚’å–るサイズsidesã®ç›´æ–¹ä½“ã‚’æç”»ã™ã‚‹
- void dsSetViewPoint(float xyz[3], float hpr[3])
視点xyzã¨è¦–ç·šhpr[°]ã‚’è¨å®šã™ã‚‹ - void dsSimulationLoop(int argc, char **argv,int w, int h, dsfunction *fn)
シミュレーションループを呼ã³å‡ºã™ã€‚1ã€2番目ã®å¼•æ•°ã¯main関数ã®å¼•æ•°ã§ã€3,4ç•ªç›®ã¯æç”»ã‚¦ã‚¤ãƒ³ãƒ‰ã‚¦ã®å¤§ãã•(横w,縦h)ã§ã€5番目ã®å¼•æ•°ã¯æç”»é–¢æ•°ã‚¯ãƒ©ã‚¹
- dBodyID dBodyCreate(dWorldID world)
次ã«ã€è©³ã—ã„コメントã®ã¤ã„ãŸã‚½ãƒ¼ã‚¹ã‚³ãƒ¼ãƒ‰ã‚’以下ã«ç¤ºã—ã¾ã™ã€‚main関数ã‹ã‚‰èªã‚“ã§ãã ã•ã„。
[cpp]
/ / Hello World  by ã§ã‚€
#include    // ODEã®ãƒ˜ãƒƒãƒ€ãƒ¼ãƒ•ァイル(動力å¦è¨ˆç®—用)
#include // ドãƒãƒ¼ã‚¹ã‚¿ãƒƒãƒ•ヘッダーファイル(3Dグラフィクス用)#ifdef dDOUBLE
#define dsDrawSphere dsDrawSphereD // å˜ç²¾åº¦ã¨å€ç²¾åº¦ã®æç”»é–¢æ•°ã«å¯¾å¿œã™ã‚‹ãŠã¾ã˜ãªã„
#endif
static dWorldID world;  // 動力å¦è¨ˆç®—用ワールド
dBodyID ball;       // 玉
const dReal radius = 0.2, mass = 1.0; // 玉ã®åŠå¾„(m)ã€çމã®é‡ã•(kg)
// シミュレーションループ 毎回呼ã³å‡ºã•れ実行ã•れã¾ã™ã€‚
// 動力å¦è¨ˆç®—ã¯ã‚¹ãƒ†ãƒƒãƒ—サイズã ã‘ã‚’ã“ã“ã§æŒ‡å®šã™ã‚Œã°è‡ªå‹•çš„ã«è¨ˆç®—ã•れã¾ã™ã€‚
// ãŸã ã—ã€æç”»ã¯ã“ã“ã§æ›¸ã‹ãªã„ã¨ä½•も表示ã•れã¾ã›ã‚“。
static void simLoop (int pause)
{
 const dReal *pos,*R; // ä½ç½®ã€å›žè»¢è¡Œåˆ—dWorldStep(world,0.05);  // シミュレーションã®ã‚¹ãƒ†ãƒƒãƒ—サイズを0.05ç§’ã«è¨å®šã€‚
dsSetColor(1.0,0.0,0.0); // 色ã®ã‚»ãƒƒãƒˆã€‚引数ã¯å…‰ã®ï¼“原色(赤ã€ç·‘ã€é’)。値ã¯ï¼ã‹ã‚‰ï¼‘.
 pos = dBodyGetPosition(ball);  // 玉ã®ä½ç½®ã‚’å–å¾—
 R = dBodyGetRotation(ball);   // 玉ã®å§¿å‹¢ã‚’å–å¾—
 dsDrawSphere(pos,R,radius);   //赤玉をæç”»
}
// ドãƒãƒ¼ã‚¹ã‚¿ãƒƒãƒ•ã®å‰å‡¦ç†é–¢æ•°
void start()
{
 // カメラã®è¨å®š
 static float xyz[3] = {0.0,-3.0,1.0};    // 視点ã®ä½ç½® (x, y, z [m])
 static float hpr[3] = {90.0,0.0,0.0};   // è¦–ç·šã®æ–¹å‘(ヘッドã€ãƒ”ッãƒã€ãƒãƒ¼ãƒ«[°])
 dsSetViewpoint (xyz,hpr);         // 視点ã®è¨å®š
}
// メイン関数 ã“ã“ã‹ã‚‰èªã‚“ã§ãã ã•ã„。
int main (int argc, char **argv)
{
 dReal x0 = 0.0, y0 = 0.0, dReal z0 = 1.0; // ボールã®åˆæœŸä½ç½®[m]
 dMass m1;   // 質é‡ãƒ‘ãƒ©ãƒ¡ãƒ¼ã‚¿æ§‹é€ ä½“ï¼ˆè³ªé‡ã€æ…£æ€§ãƒ¢ãƒ¼ãƒ¡ãƒ³ãƒˆãªã©ï¼‰
// æç”»API(ドãƒãƒ¼ã‚¹ã‚¿ãƒƒãƒ•)ã®ãŠã¾ã˜ãªã„(è¨å®šï¼‰
 dsFunctions fn;        // ドãƒãƒ¼ã‚¹ã‚¿ãƒƒãƒ•æ§‹é€ ä½“
 fn.version = DS_VERSION;  // ドãƒãƒ¼ã‚¹ã‚¿ãƒƒãƒ•ã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³
 fn.start = &start;      //  シミュレーションã®å‰å‡¦ç†é–¢æ•°
 fn.step = &simLoop;    // シミュレーションã®å„ステップã§å‘¼ã°ã‚Œã‚‹é–¢æ•°
 fn.command = NULL;     // 関数ãŒãªã„ã®ã§NULLãƒã‚¤ãƒ³ã‚¿ã‚’指定
 fn.stop    = NULL;    // 関数ãŒãªã„ã®ã§NULLãƒã‚¤ãƒ³ã‚¿ã‚’指定
 fn.path_to_textures = "../../drawstuff/textures"; // テクスãƒãƒ£ã¸ã®ãƒ‘ス
// 動力å¦è¨ˆç®—用世界ã®å‰µé€
 world = dWorldCreate(); // 動力å¦è¨ˆç®—ã®å¯¾è±¡ã¨ãªã‚‹å‰›ä½“を入れるworldを作る。戻り値ã¯ãã®ID番å·ã€‚
 dWorldSetGravity(world,0,0,-0.001); // é‡åŠ›åŠ é€Ÿåº¦ï¼ˆx, y, z)ã®è¨å®šã€€ã€€-0.001 m/s^2
// 玉を作る
 ball = dBodyCreate(world);        //  剛体(body)を作る。戻り値ã¯ãã®ID番å·
 dMassSetZero(&m1);             // 質é‡ãƒ‘ラメータm1ã®åˆæœŸåŒ–
 dMassSetSphereTotal(&m1,mass,radius); // 質é‡ãƒ‘ラメータm1ã«å‰›ä½“ã®è³ªé‡ã‚’è¨å®š
 dBodySetMass(ball,&m1);          // 剛体ã«è³ªé‡ãƒ‘ラメータm1ã‚’è¨å®š
 dBodySetPosition(ball, x0, y0, z0);     // 剛体ballã®çµ¶å¯¾åº§æ¨™ã§ã®ä½ç½®(x, y, z)ã‚’è¨å®š
// シミュレーション本体
 // argc, argvã¯main関数ã®å¼•æ•°ã€ã‚¦ã‚¤ãƒ³ãƒ‰ã‚¦ã‚µã‚¤ã‚º352 x 288ピクセル, fnã¯ãƒ‰ãƒãƒ¼ã‚¹ã‚¿ãƒƒãƒ•æ§‹é€
 dsSimulationLoop (argc,argv,352,288,&fn);
// 世界ã®ç ´å£Š
 dWorldDestroy (world); // 動力å¦è¨ˆç®—ã®å¯¾è±¡ã¨ãªã£ãŸworldã‚’ç ´å£Šã™ã‚‹
return 0;
}
[/cpp]
ã“れã¯èµ¤çމã®è‡ªç”±è½ä¸‹ã®ãƒ—ãƒã‚°ãƒ©ãƒ ã§ã™ã€‚ã“れãŒãªãœHello Worldã‹ã¨ã„ã†ã¨ã€ä¸Šã®ã‚½ãƒ¼ã‚¹ã‚³ãƒ¼ãƒ‰ã§worldã¯å‹•力å¦è¨ˆç®—ã‚’ã™ã‚‹ä¸–界ã®ã“ã¨ã§ã™ã€‚動力å¦è¨ˆç®—ã®Worldã«åˆã‚ã¦ãŠç›®ã«ã‹ã‹ã£ãŸã®ã§ã“ã®ã‚³ãƒ¼ãƒ‰ã‚‚Hello Worldã¨å‘¼ã¶ã“ã¨ã«ã—ã¾ã—ょã†ã€‚
ã¾ãŸã€å°æ–‡å—ã®dã§å§‹ã¾ã‚‹é–¢æ•°ã¯ODEã®API(application interface)ã§ã€dsã§å§‹ã¾ã‚‹é–¢æ•°ã¯drawstuff(ドãƒãƒ¼ã‚¹ã‚¿ãƒƒãƒ•)ã®APIã§ã™ã€‚drawstuffã¯ODE付属テストプãƒã‚°ãƒ©ãƒ 表示用ã®ãƒ©ã‚¤ãƒ–ラリã®ã“ã¨ã§ã™ã€‚
説明ã¯ã“ã®ãらã„ã«ã—ã¦ã“ã®ãƒ•ァイル(sample1-071001.tgz)をダウンãƒãƒ¼ãƒ‰ã—ã¦ä»¥ä¸‹ã®æ‰‹é †ã§å®Ÿè¡Œã—ã¦ã¿ã¾ã—ょã†ï¼
実行方法
1. sample1-071001.tgzã‚’/home/ユーザå/src/ode-ãƒãƒ¼ã‚¸ãƒ§ãƒ³ç•ªå·/myprogã®ä¸‹ã«ãƒ€ã‚¦ãƒ³ãƒãƒ¼ãƒ‰
2. ã“れã‹ã‚‰ã¯ã‚¿ãƒ¼ãƒŸãƒŠãƒ«ã§ä»¥ä¸‹ã®ã‚³ãƒžãƒ³ãƒ‰ã‚’実行ã—ã¦ãã ã•ã„。$ã¯ãƒ—ãƒãƒ³ãƒ—トã§ã™ã€‚
$ cd /home/ユーザå/src/ode-ãƒãƒ¼ã‚¸ãƒ§ãƒ³ç•ªå·/myprog
$ tar xvzf sample1-071001.tgz
$ cd sample1
$ make
3. 実行
$ ./sample1
ã“ã“ã§ã¯é‡åŠ›åŠ é€Ÿåº¦ã‚’èµ¤çŽ‰ãŒã‚†ã£ãりè½ä¸‹ã—ã¦ã„ãã¾ã™ãŒã€ãªã‚“ã¨åœ°é¢ã‚’通り抜ã‘ã¦æ¶ˆãˆã¦ã—ã¾ã„ã¾ã™ã€‚
実ã¯ä¸Šã®ãƒ—ãƒã‚°ãƒ©ãƒ ã«ã¯è¡çªæ¤œå‡ºæ©Ÿèƒ½ãŒçµ„ã¿è¾¼ã¾ã‚Œã¦ã„ãªã‹ã£ãŸã®ã§ã™ã€‚
次回ã¯ã“ã®ãƒ—ãƒã‚°ãƒ©ãƒ ã«è¡çªæ¤œå‡ºæ©Ÿèƒ½ã‚’組ã¿è¾¼ã¿ã¾ã™ã€‚
ä»Šå›žç™»å ´ã—ãŸAPI
æ›´æ–°å±¥æ´
- 2008-7-10: dInitODE(), dCloseODE()ã®è¿½åŠ
- 2008-4-14: 実行方法ã®ãƒ•ァイルåã®é–“é•ã„を訂æ£
- 2008-1-13: ソースコードを整形ã—ãŸ
- 2007-10-1: sample1ã®makefileを変更ã—ã¦æ€’ã‚‰ã‚Œãšæ¸ˆã‚€ã‚ˆã†ã«ã—ãŸã€‚
- 2007-1-20: 本文ã®èª¬æ˜Žä¸¦ã³ã«ã‚½ãƒ¼ã‚¹ã‚³ãƒ¼ãƒ‰ã®ã‚³ãƒ¡ãƒ³ãƒˆã‚’より詳ã—ãã—ã€API集をåŽéŒ²ã—ãŸã€‚
mamoã•ん,
解決ã—ã¦ä½•よりã§ã™ï¼Žã¾ãŸï¼Œä½•ã‹ã‚れã°ã‚³ãƒ¡ãƒ³ãƒˆãã ã•ã„.
ã§ã‚€
ãŠè¿”事ã‚りãŒã¨ã†ã”ã–ã„ã¾ã™ã€‚
インストールをやり直ã—ãŸã‚‰sampleãŒæ£å¸¸ã«å‹•ãよã†ã«ãªã‚Šã¾ã—ãŸã€‚
ç°¡å˜ãªã“ã¨ã§è³ªå•ã—ã¦ã—ã¾ã„ã™ã¿ã¾ã›ã‚“。
ã“れã‹ã‚‰ã‚‚demuroã§å‹‰å¼·ã‚’é ‘å¼µã£ã¦ã„ããŸã„ã¨æ€ã†ã®ã§ã‚ˆã‚ã—ããŠé¡˜ã„ã—ã¾ã™ã€‚
mamoã•ん,
åˆã‚ã¾ã—ã¦ï¼Ž
windresãŒè¦‹ã¤ã‹ã‚‰ãªã„よã†ã§ã™ã.
/mingw/bin/windresãŒã‚りã¾ã™ã‹ï¼Ÿ
windresã¯MinGWã«ã¤ã„ã¦ãã‚‹ã®ã§ï¼ŒMinGWã®ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ãŒå®Œå…¨ã«ã§ãã¦ã„ãªã„å¯èƒ½æ€§ãŒã‚りã¾ã™ï¼Žä¸€åº¦ï¼Œã‚¢ãƒ³ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã—ã¦ã‹ã‚‰ï¼Œæ³¨æ„æ·±ã入れ直ã—ã¦ãã ã•ã„. 
ã§ã‚€
ã¯ã˜ã‚ã¾ã—ã¦ã€‚mamoã¨ã„ã„ã¾ã™ã€‚
demuro.netã‚’å‚考ã«ODEã®å‹‰å¼·ã‚’ã•ã—ã¦ã‚‚らã£ã¦ã„ã¾ã™ã€‚
今回ã€è¬›åº§5ã®sample1を実行ã—よã†ã¨ã—ãŸã®ã§ã™ãŒã€makeã‚’ã—ãŸã¨ãã«ä»¥ä¸‹ã®ã‚ˆã†ãªã‚‚ã®ãŒå‡ºã¦ãã¦ã—ã¾ã„ã€makeã§ãã¾ã›ã‚“。
windres ../../drawstuff/src/resources.rc -O coff resources.o
make: windres: コマンドãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“ã§ã—ãŸ
make: *** [resources.o] エラー 127
質å•コーナーをå‚考ã«ã—ã€mekefileã§ãŠã‹ã—ã„æ‰€ãŒãªã„ã‹è¦‹ã¦ã€ã„ã‚ã„ã‚試行錯誤ã—ã¦ã¿ã¾ã—ãŸãŒã€ã§ãã¾ã›ã‚“ã§ã—ãŸã€‚
ã‚‚ã—ã€è§£æ±ºæ³•ãŒä½•ã‹ã‚りã¾ã—ãŸã‚‰æ•™ãˆã¦ãã ã•ã„。よã‚ã—ããŠé¡˜ã„ã—ã¾ã™ã€‚
åˆå¿ƒè€…Jã•ã‚“ã€
ã”連絡ã‚りãŒã¨ã†ã”ã–ã„ã¾ã—ãŸã€‚
ODE講座ã®ã‚µãƒ³ãƒ—ルプãƒã‚°ãƒ©ãƒ ã¯å¤ã„ã®ã§ã€æœ€æ–°ã®ODEã«makefileãŒå分ã«å¯¾å¿œã§ãã¦ã„ãªã„å¯èƒ½æ€§ã‚‚ã‚りã¾ã™ã€‚ã†ã¾ãã„ã‹ãªã„åŽŸå› ã®ã»ã¨ã‚“ã©ã¯ã€makefileã«æ›¸ã„ã¦ã‚るライブラリã®å ´æ‰€ã«ã€ãƒ©ã‚¤ãƒ–ラリãŒãªã„å ´åˆã§ã™ã€‚
make installを忘れãŸã‚Šã€ã‚ã‚‹ã„ã¯ã€./configure –enable-double-percisionã¨æ‰“ã¤ã¨ãã«ã‚¹ãƒšãƒ«ãƒŸã‚¹ã‚’ã—ãŸã‚Šã€enableã®å‰ã«” – “ãŒï¼’個必用ãªã®ã‚’é–“é•ã£ã¦ï¼‘個ã«ã—ãŸã‚Šã™ã‚‹å ´åˆã§ã™ã€‚
ã¾ãŸã€ã†ã¾ãã„ã‹ãªã„箇所ãŒã‚れã°ã”連絡ãã ã•ã„。
ã§ã‚€
ã¯ã˜ã‚ã¾ã—ã¦ã€æœ€è¿‘ODEã«ç€æ‰‹ã—å§‹ã‚ãŸè€…ã§ã™ã€‚
自分も悩ã‚ã‚‹åˆå¿ƒè€…æ§˜åŒæ§˜ã€makeãŒé€šã‚‰ãšï¼ˆåŒã˜ã‚¨ãƒ©ãƒ¼æ–‡ãŒå‡ºãŸï¼‰è‹¦æˆ¦ã—ã¦ã„ã¾ã—ãŸãŒã€è§£æ±ºã§ãã¾ã—ãŸã€‚
講義2ã®crashãŒå‡ºæ¥ãŸäººã¯ã€ode-0.9内ã«ã‚る configure configure.in をコピーã—ã¦ã€sample1やらsample2ã«å…¥ã‚Œã¦ã€makeã®å‰ã«./configure –enable-double-percision
ã®å¾Œã«makeã™ã‚Œã°ã¨ãŠã‚Šã¾ã—ãŸï¼
ã©ã†ã«ã‹è‡ªå·±è§£æ±ºã™ã‚‹ã“ã¨ãŒã§ãã¾ã—ãŸã€‚
1度ODEコンパイルã—ãªãŠã—ãŸã‚‰ã§ãるよã†ã«ãªã‚Šã¾ã—ãŸã€‚
長々ã¨è³ªå•ã—ã¦ã—ã¾ã„申ã—訳ã‚りã¾ã›ã‚“ã§ã—ãŸã€‚
今後ã¨ã‚‚よã‚ã—ããŠé¡˜ã„ã—ã¾ã™ã€‚
ã§ã‚€ã•ã‚“ã€
返信ã‚りãŒã¨ã†å¾¡åº§ã„ã¾ã™ã€‚
エラーã¯å‰å›žä¸Šã’ãŸåˆ†ã ã‘ã§ã™ã€‚
ã¾ãŸã€è¬›ç¾©ï¼–ã®ãƒ—ãƒã‚°ãƒ©ãƒ ã§ã‚‚試ã—ã¾ã—ãŸãŒåŒæ§˜ã®ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ãŒå‡ºã¦ãã¾ã—ãŸã®ã§ã€ä½•ã‹æ ¹æœ¬çš„ãªã¨ã“ã‚ã‚’é–“é•ã£ã¦æã‚ŒãŒã‚ã‚‹ã®ã§ã‚‚ã†å°‘ã—調ã¹ã¦ã¿ã¾ã™ã€‚
æ‚©ã‚ã‚‹åˆå¿ƒè€…ã•ã‚“ã€
サンプルプãƒã‚°ãƒ©ãƒ ã¯sample1-071001.tgzã¨ã„ã†åå‰ã§ã€ã‚µãƒ¼ãƒãƒ¼ã«ç½®ã„ã¦ã„ã¾ã™ã€‚ダウンãƒãƒ¼ãƒ‰ã™ã‚‹ç’°å¢ƒã«ã‚ˆã£ã¦ã¯å¼·åˆ¶çš„ã«æ‹¡å¼µåãŒtarã«å¤‰ã‚るよã†ã§ã™ã€‚
ã•ã¦ã€ã‚¨ãƒ©ãƒ¼ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã§ã™ãŒã€ã“れã§å…¨éƒ¨ã§ã—ょã†ã‹ï¼Ÿä»–ã«ã‚‚ã‚ã£ãŸã‚‰æ•™ãˆã¦ãã ã•ã„ã€‚æƒ…å ±ãŒå°‘ãªã™ãŽã¦åŽŸå› ã‚’ç‰¹å®šã§ãã¾ã›ã‚“。
ã§ã‚€
ãŸã³ãŸã³ã™ã„ã¾ã›ã‚“。
è¿½åŠ ã—ã¾ã™ã€‚
å…ˆã»ã©ã§ããªã‹ã£ãŸç†ç”±ã¯ã€tar xvzf sample1-071001.tgzã¨è¨˜è¼‰ã•れã¦ã¾ã™ãŒ
ファイルをプãƒãƒ‘ティã§èª¿ã¹ãŸçµæžœsample1-071001.tarã§ã—ãŸã€‚
tar xvzf sample1-071001.tarã§è©¦ã—ãŸã‚‰ç„¡äº‹ã«é€šéŽã§ãã¾ã—ãŸãŒã€
makeã®ã¨ã“ã‚ã§ä»¥ä¸‹ã®ã‚¨ãƒ©ãƒ¼ãŒå‡ºã¦ãã¦ã—ã¾ã„ã¾ã™ã€‚
$ make
g++ -Wall -fno-exceptions -fno-rtti -g -DWIN32 -mwindows -o sample1 sample1.o -L../../drawstuff/src -L../../ode/src -L/usr/X11R6/lib -L/usr/local/lib -L/usr/lib/w32api/lib -I. -I../../include -I/usr/X11R6/include -I/usr/include -I/usr/include/w32api/include -lode -ldrawstuff -lstdc++ -lcomctl32 -lkernel32 -luser32 -lgdi32 -lopengl32 -lglu32 -lwinmm -lm resources.o
make: *** [sample1] Error 1
ã“ã®ã‚½ãƒ¼ã‚¹ã ã¨ã©ã“ã§ã‚¨ãƒ©ãƒ¼ãŒã§ã¦ã„ã‚‹ã®ã‹ã‚ã‹ã‚Šã¾ã›ã‚“。
よã‚ã—ã‘ã‚Œã°æ•™ãˆã¦ã‚‚らãˆã¾ã›ã‚“ã‹ï¼Ÿ
å˜ç´”ãªã—ã¤ã‚‚ã‚“ã§ã™ã„ã¾ã›ã‚“。
ã§ã‚€ã•ã‚“ã€
返信ã‚りãŒã¨ã†å¾¡åº§ã„ã¾ã™ã€‚
sample1-071001.tgzã§ã‚„ã£ã¦ã¿ã¾ã—ãŸãŒã€å‰å›žã¨åŒã˜çµæžœã«ãªã£ã¦ã—ã¾ã—ã¾ã—ãŸã€‚
$ tar xvzf sample1-071001.tgz
tar (child): sample1-071001.tgz: Cannot open: No such file or directory
tar (child): Error is not recoverable: exiting now
tar: Child returned status 2
tar: Error exit delayed from previous errors
ãã“ã§ç¢ºèªã—ãŸã„ã—ãŸã„ã®ã§ã™ãŒã€è¬›åº§ï¼’ã®å†…容ãŒã§ãã¦ã„れã°
ã“ã®ãƒ—ãƒã‚°ãƒ©ãƒ を実行ã™ã‚‹ã“ã¨ã¯ã§ãã¾ã™ã§ã—ょã†ã‹ï¼Ÿ
ã‚‚ã—ã‹ã—ãŸã‚‰ä½•ã‹ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã—忘れã¦ãªã„ã‹å¿ƒé…ã«ãªã£ã¦ãã¾ã—ãŸã€‚
ã¾ãŸã“ã®ã‚¨ãƒ©ãƒ¼ã¯ã©ã®ã‚ˆã†ãªæ„味を表ã™ã®ã§ã—ょã†ã‹ï¼Ÿ
使用環境ã¯ã€MINGW32ã§ã™ã€‚
ãŸã³ãŸã³å¤‰ãªè³ªå•ã‚’ã—ã¦ã—ã¾ã„ã™ã„ã¾ã›ã‚“。
åˆå¿ƒè€…ã•ã‚“ã€
コメントã‚りãŒã¨ã†ã”ã–ã„ã¾ã™ã€‚最近ã€ã‚³ãƒ¡ãƒ³ãƒˆãŒãªã‹ã£ãŸã®ã§å¯‚ã—ã‹ã£ãŸã§ã™ã€‚
ã•ã¦ã€ã”質å•ã§ã™ãŒã€ã‚µãƒ³ãƒ—ルプãƒã‚°ãƒ©ãƒ ã®ãƒ•ァイルåã‚’sample1-0701001.tgzã¸å¤‰æ›´ã—ãŸã«ã‚‚ã‹ã‹ã‚らãšã€èª¬æ˜Žã®æ–‡ç« ãŒæ˜”ã®åå‰sample1-070919.tgzã§å‡ºã¦ã„ãŸã®ãŒåŽŸå› ã§ã™ã€‚
ãŠè©«ã³ã—ã¦è¨‚æ£ã—ã¾ã™ã€‚ãªãŠã€sample1ã®å¾Œã¯å¹´æœˆæ—¥ã§ã™ã€‚
ã§ã‚€
MINGWã§Sample1ã‚’ã†ã¾ã実行ã§ãã¾ã›ã‚“ã§ã—ãŸã€‚
make以å‰ã«$ tar xvzf sample1-070919.tgzã§ã‚¨ãƒ©ãƒ¼ãŒã§ã¦ã—ã¾ã„ã¾ã™ã€‚
$ tar xvzf sample1-070919.tgz
tar (child): sample1-070919.tgz: Cannot open: No such file or directory
tar (child): Error is not recoverable: exiting now
tar: Child returned status 2
tar: Error exit delayed from previous errors
ソースã¯ä»¥ä¸Šã®ã‚ˆã†ã«ãªã‚Šã¾ã™ã€‚
ã¾ãŸã€ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã—ãŸ0701001.tgzã¨070919.tgzã¯ã€ä½•ã‹é–¢ä¿‚ãŒã‚ã‚‹ã®ã§ã—ょã†ã‹ï¼Ÿ$ tar xvzf sample1-070919.tgzã¨$ tar xvzf sample1-071001.tgzã®ä¸¡æ–¹ã§è©¦ã—ã¾ã—ãŸãŒç„¡ç†ã§ã—ãŸã€‚
講座2ã®ãƒ‡ãƒ¢ãƒ—ãƒã‚°ãƒ©ãƒ ã¯ä¸Šæ‰‹ãã„ãã¾ã—ãŸã€‚
åˆã‚ã¦é–“ã‚‚ãªã„ã®ã§ã€åˆæ©çš„ãªãƒŸã‚¹ã‚’ã—ã¦ã„ãŸã‚‰ã™ã„ã¾ã›ã‚“。
ãƒã‚¦ã•ã‚“ã€
返事ãŒé…ããªã‚Šã™ã¿ã¾ã›ã‚“。
Visual C++ 2008 Expressionã§ODE本ã®ã‚µãƒ³ãƒ—ルプãƒã‚°ãƒ©ãƒ ã‚’å‹•ã‹ã™ãŸã‚ã®æ–¹æ³•ã‚’ODEæœ¬ã‚«ãƒ†ã‚´ãƒªã«æ›¸ãã¾ã—ãŸã®ã§å‚考ã«ã—ã¦ãã ã•ã„。
ã‚ã‹ã‚Šã¥ã‚‰ã„箇所や間é•ã„ãŒã‚れã°ã”指摘ãã ã•ã„。
ã§ã‚€
ã¯ã˜ã‚ã¾ã—ã¦ã€ã§ã‚€ã•ã‚“
åªä»ŠODEã®æœ¬ã‚’見ãªãŒã‚‰å‹‰å¼·ä¸ã§ã™ã€‚
自分ã§ãƒ—ãƒã‚°ãƒ©ãƒ を組ã¿ç«‹ã¦ã¦å®Ÿè¡Œã—ã¦ã¿ãŸã„ã®ã§ã™ãŒã©ã†ã™ã‚Œã°å®Ÿè¡Œã§ãã‚‹ã®ã§ã—ょã†ã‹ã€‚å› ã¿ã«ä»Šè‡ªåˆ†ã¯”Microsoft Visual Studio 2005″ã§ä½œã£ã¦ã„ã¾ã™ã€‚ã—ã‹ã—ヘッダファイルãŒã‚ã‹ã‚‰ãªã„ã®ã§å®Ÿè¡Œã™ã‚‹ã“ã¨ãŒã§ããªã„ã§ã„る状態ã§ã™ã€‚ã‚‚ã—よã‚ã—ã‘れã°ãƒ¡ãƒ¼ãƒ«ã‚’ãã ã•ã„。
ä¸‹æ‰‹ãªæ–‡ç« ã«ãªã£ã¦ã™ã¿ã¾ã›ã‚“m(_ _)m
Thomsonã•ã‚“ã€
ã¯ã˜ã‚ã¾ã—ã¦ã€‚
ã”æŒ‡æ‘˜ã‚’å—ã‘ã‚‹ã¾ã§å…¨ãæ°—ãŒã¤ãã¾ã›ã‚“ã§ã—ãŸã€‚ç¾åœ¨ã€ã“ã®ãƒšãƒ¼ã‚¸ã®ä¸ã»ã©ã«ã‚ã‚‹Next Pageã¯demura.netã®å…¨è¨˜äº‹(http://demura.net/archives/9ode/)ã®é †ç•ªã«ãªã£ã¦ã„ã¾ã™ã€‚通常ã®ãƒ–ãƒã‚°ãªã‚‰ã“ã®è¨å®šã§è‰¯ã„ã®ã§ã—ょã†ãŒã€ã‚«ãƒ†ã‚´ãƒªåˆ¥ã®è¨˜äº‹ãŒå¤šã„ã®ã§å¤‰æ›´ã—ã¾ã™ã€‚
ãŸã ã€ODE講座ã«é–¢ã™ã‚‹è¨˜äº‹ã¯ODEカテゴリã®ä¸ã®ã‚µãƒ–カテゴリã¨ãªã£ã¦ã„ã‚‹ã®ã§ã€ODEカテゴリ内ã®é †ç•ªã«ãªã‚Šã¾ã™ã€‚ã¤ã¾ã‚Šã€Next Pageã«ã¯ODEã«ã¯é–¢ä¿‚ã—ã¾ã™ãŒã€ODE講座ã«é–¢ä¿‚ã—ãªã„記事ãŒãƒªãƒ³ã‚¯ã•ã‚Œã‚‹å ´åˆãŒã‚りã¾ã™ã€‚ã”了承ãã ã•ã„。
ã¯ã˜ã‚ã¾ã—ã¦ã€‚
Thomsondã§ã™ã€‚
最近ODEを使用ã—å§‹ã‚ã€å‡ºæ‘先生ã®ãƒ›ãƒ¼ãƒ ーページを使ã£ã¦è…•を磨ã“ã†ã¨ã—ã¦ã„ã¾ã™ã€‚
ã¨ã¦ã‚‚ã‚ã‹ã‚Šã‚„ã™ã„ã—ã€å‚考ã«ãªã£ã¦ã„ã¾ã™ã€‚
コメントãªã®ã§ã™ãŒã€ã“ã®ãƒšãƒ¼ã‚¸ã®ä¸ç¨‹ã«ã‚ã‚‹Next Pageã®ãƒªãƒ³ã‚¯å…ˆãŒé–“é•ã£ã¦ã„るよã†ãªæ°—ãŒã™ã‚‹ã®ã§ã™ãŒã©ã†ã§ã—ょã†ã‹ï¼Ÿ
è¡çªå›žé¿ã®ç¯€ã«ã¯å†åº¦ç›®æ¬¡ã«æˆ»ã‚‰ãªã„ã¨è¡Œã‘ãªã„よã†ã«ãªã£ã¦ã„るよã†ã§ã™ã€‚
ãƒžã‚¤ãƒŠãƒ¼ãªæŒ‡æ‘˜ã‚’ã—ã¦ã—ã¾ã„ã€ã™ã„ã¾ã›ã‚“
ã“ã®ãƒ›ãƒ¼ãƒ ページã§å‹‰å¼·ã—ã¦å®ŸåŠ›ã‚’ä»˜ã‘ã¦ã€ç«‹æ´¾ã«ãƒ—ãƒã‚°ãƒ©ãƒ を作れるよã†ã«ãªã‚ŠãŸã„ã¨æ€ã„ã¾ã™ã€‚
Jimmyã•ã‚“ã€
よã‹ã£ãŸã§ã™ã。ã¾ãŸã€ã‚³ãƒ¡ãƒ³ãƒˆãã ã•ã„。
ã§ã‚€ã•ã‚“ã€
ã§ãã¾ã—ãŸã€‚ã©ã†ã‚‚ã‚りãŒã¨ã†ã”ã–ã„ã¾ã—ãŸã€‚
jimmyã•ã‚“ã€
ç§ã®iMac G5ã§ã¯ä»¥ä¸‹ã®makefileã§ã‚³ãƒ³ãƒ‘イルã§ãã¾ã—ãŸã€‚
TARGETã‚’armã‹ã‚‰koboshiã«ã—ãŸã ã‘ã§ã™ã€‚
ã‚‚ã—ã€ä»¥ä¸‹ã®makefileã§ã‚³ãƒ³ãƒ‘イルã§ããªã‹ã£ãŸã‚‰æ•™ãˆã¦ãã ã•ã„。ãªãŠã€ã“ã“ã«ã‚¿ãƒ–ã„ã‚Œã‚‹ã¨æ›¸ã„ãŸã¨ã“ã‚ã«ã‚¿ãƒ–ã‚’ã„れã¦ãã ã•ã„。makefileã®ãŠç´„æŸã§ã™ã€‚
CC = g++ -I -O2 -Wall -g
TARGET = koboshi
OBJS = $(TARGET).o
SOURCE = $(TARGET).cpp
HEADER =
LIBS = -L../../drawstuff/src -L/usr/local/lib -L/usr/X11R6/lib -L/usr/X11R6/lib
INDS = -I. -I../../include -I/usr/local/include -I/usr/X11R6/include
OPTS = -lm -lode -ldrawstuff -lX11 -framework OpenGL -framework Carbon -framework AGL
$(TARGET):$(OBJS) $(HEADER)
ã“ã“ã«ã‚¿ãƒ–を入れる $(CC) -o $(TARGET) $(OBJS) $(LIBS) $(INDS) $(OPTS)
$(OBJS):$(SOURCE) $(HEADER)
ã“ã“ã«ã‚¿ãƒ–を入れる $(CC) -c $(SOURCE) $(LIBS) $(INDS)
clean:
ã“ã“ã«ã‚¿ãƒ–を入れる rm $(TARGET) $(OBJS) *.*~ *~
ã§ã‚€ã•ã‚“ã€
ãŠè¿”事ã©ã†ã‚‚ã‚りãŒã¨ã†ã”ã–ã„ã¾ã—ãŸã€‚
ODE講座16ã®ã‚µãƒ³ãƒ—ルプãƒã‚°ãƒ©ãƒ ã¯ã†ã¾ã実行ã§ãã¾ã—ãŸã€‚
ã§ã‚‚ã€ãã®makefileを使ã£ã¦ã€€(TARGET = koboshiã«ã—ã¾ã—ãŸ)
koboshiサンプルプãƒã‚°ãƒ©ãƒ ã‚’compileã™ã‚ã¨ä»¥ä¸‹ã®å•題ãŒã‚ã£ãŸã€‚
makefile:14: warning: overriding commands for target `koboshi’
makefile:11: warning: ignoring old commands for target `koboshi’
make: Circular koboshi <- koboshi dependency dropped.
g++ -o .cpp
i686-apple-darwin8-g++-4.0.1: no input files
make: *** [.cpp] Error 1
Jimmyã•ã‚“ã€
é…ããªã‚Šã¾ã—ãŸãŒODE講座16ã«OS X用ã®makefileã‚’å«ã‚“ã サンプルプãƒã‚°ãƒ©ãƒ を作りã¾ã—ãŸã®ã§å‚考ã«ã—ã¦ãã ã•ã„。ã“れã¯iMac G5ã§ç¢ºèªã—ãŸã®ã§å•題ã¯ãªã„ã¨æ€ã„ã¾ã™ã€‚makefile.osxã‚’makefileã«ã‚³ãƒ”ーã—ã¦ã‹ã‚‰makeã—ã¦ãã ã•ã„。
ãŠæ‰‹æ•°ã§ã™ãŒã€ã†ã¾ã実行ã§ããŸã‚‰ã”é€£çµ¡é ‚ã‘ãŸã‚‰ã‚りãŒãŸã„ã§ã™ã€‚
ã§ã‚€ã•ã‚“ã€
ãŠè¿”事ã©ã†ã‚‚ã‚りãŒã¨ã†ã”ã–ã„ã¾ã—ãŸã€‚å•題ã¯ã¾ã 解決ã•れã¦ã„ãªã„ã§ã™ã€‚
mv arm.c arm.cpp ã‚’ã—ã¦makeã™ã‚‹ã¨ä»¥ä¸‹ã®ã‚ˆã†ãªerrorãŒã§ã¾ã—ãŸã€‚
makefile:15: warning: overriding commands for target `arm’
makefile:12: warning: ignoring old commands for target `arm’
make: Circular arm <- arm dependency dropped.
g++ -o .cpp
i686-apple-darwin8-g++-4.0.1: no input files
make: *** [.cpp] Error 1
Jimmyã•ã‚“ã€
コメントãŒé€”ä¸ã§çµ‚ã‚ã£ã¦ã„ã‚‹ã®ã§ã‚ˆãã‚ã‹ã‚Šã¾ã›ã‚“ãŒã€å•題ã¯è§£æ±ºã•れãŸã®ã§ã—ょã†ã‹ï¼Ÿ
æ‹¡å¼µåãŒ.cã¨.cppã¨æ··åœ¨ã—ã¦ã„ã‚‹ç†ç”±ã¯ã€æœ¬æ¥åˆå¿ƒè€…用ã®è¬›åº§ãªã®ã§c言語ã§ãƒ—ãƒã‚°ãƒ©ãƒ を記述ã—ã¾ã—ãŸãŒã€cygwinã§ã¯ã©ã†ã—ã¦ã‚‚gccã§ã¯ã‚³ãƒ³ãƒ‘イルã§ããšã€g++を使ã£ã¦ã„ã¾ã—ãŸã€‚
ã¾ãŸã€c言語もc99ã«ã‚ˆã‚‹æ–°ã—ã„æ›¸å¼ã‚’多ã使ã£ã¦ã„ã‚‹ãŸã‚gccã®ãƒ‡ãƒ•ォルトã®ã‚ªãƒ—ションã§ã¯ã‚³ãƒ³ãƒ‘イルã§ããªã„サンプルプãƒã‚°ãƒ©ãƒ を多ã„ã®ã§ã™ã€‚
ã•らã«ã€Visual C++ã®åˆ©ç”¨è€…ã‹ã‚‰æ‹¡å¼µåãŒ.cã§ã¯ã‚¨ãƒ©ãƒ¼ã«ãªã‚‹ã®ã§.cppã«ã—ã¦æ¬²ã—ã„ã¨ã„ã†ä¾é ¼ã‚‚ã‚りã€ã“れã‹ã‚‰ä½œæˆã™ã‚‹ã‚µãƒ³ãƒ—ルプãƒã‚°ãƒ©ãƒ ã¯å…¨ã¦.cppã«ã—よã†ã¨è€ƒãˆã¦ã„ã¾ã™ã€‚
ã§ã‚€ã•ã‚“ã€
ãŠè¿”事ã©ã†ã‚‚ã‚りãŒã¨ã†ã”ã–ã„ã¾ã—ãŸã€‚
プãƒã‚°ãƒ©ãƒ³ãƒ ã‚’downloadã—ãŸã‚‰mvã§æ‹¡å¼µå㯠.c ã‹ã‚‰ .cpp ã«å¤‰æ›´ã—ã¾ã—ãŸã€‚
Jimmyã•ã‚“
ã‚ã‘ã¾ã—ã¦ãŠã‚ã§ã¨ã†ã”ã–ã„ã¾ã™ã€‚今年もdemura.netをよã‚ã—ããŠé¡˜ã„ã—ã¾ã™ã€‚
外ã—ã¦ã„ã‚‹ã‹ã‚‚ã—れã¾ã›ã‚“ãŒã€ã“ã®makefileã¯C++用ã®ã‚³ãƒ³ãƒ‘イラg++を使ã£ã¦ã„ã¾ã™ã€‚ã¾ãŸã€æ‹¡å¼µåãŒ.cppã§ãªã‘れã°ãªã‚Šã¾ã›ã‚“。拡張åãŒ.cã¨ã„ã†ã“ã¨ã¯ã‚りã¾ã›ã‚“ã‹ï¼Ÿ
ã§ã‚€ã•ã‚“ã€
ã‚ã‘ã¾ã—ã¦ãŠã‚ã§ã¨ã†ã”ã–ã„ã¾ã™ã€‚今年もよã‚ã—ããŠé¡˜ã„ã—ã¾ã™ã€‚
ã•ã¦ã€makefileã®ä»¶ã§ã™ãŒã„ã‚ã„ã‚ãªsampleを試ã—ã¦ã¿ã¾ã—ãŸã€‚
普通å•題ã¯ãªã„ã§ã™ãŒã€ã¨ãã©ã以下ã®ã‚ˆã†ãªmessageãŒã§ã¾ã—ãŸã€‚
ãれã«å¯¾ã—ã¦ã©ã†ã—ãŸã»ã†ãŒã„ã„ã§ã—ょã†ã‹ï¼Ÿ
makefile:15: warning: overriding commands for target `koboshi’
makefile:12: warning: ignoring old commands for target `koboshi’
make: Circular koboshi <- koboshi dependency dropped.
g++ -o .cpp
i686-apple-darwin8-g++-4.0.1: no input files
make: *** [.cpp] Error 1
makefile:15: warning: overriding commands for target `arm2′
makefile:12: warning: ignoring old commands for target `arm2′
make: Circular arm2 <- arm2 dependency dropped.
g++ -o .cpp
i686-apple-darwin8-g++-4.0.1: no input files
make: *** [.cpp] Error 1
makefile:15: warning: overriding commands for target `arm2IK’
makefile:12: warning: ignoring old commands for target `arm2IK’
make: Circular arm2IK <- arm2IK dependency dropped.
g++ -o .cpp
i686-apple-darwin8-g++-4.0.1: no input files
make: *** [.cpp] Error 1
Jimmyã•ã‚“ã€
ã™ã¿ã¾ã›ã‚“。大掃除や年賀状書ãã«è¿½ã‚れã¦è¿”事ãŒé…れã¾ã—ãŸã€‚大掃除ã¯å¤§å¤‰ã§ã™ãŒã€çµ‚ã‚ã£ãŸå¾Œã¯ã™ãŒã™ãŒã—ã„æ°—分ãŒã—ã¾ã™ã€‚
ã•ã¦ã€makefileをカットアンドペーストã—ãŸã®ã§ã€TabãŒæŠœã‘ã¦ã„ã¾ã—ãŸã€‚
以下ã®makefileã§ã€Œã“ã“ã«Tabを入れるã€ã¨æ›¸ã‹ã‚Œã¦ã„ã‚‹ã¨ã“ã‚ã«Tabã‚ーを押ã—ã¦Tabを入れã¦ãã ã•ã„。
# OS X用ã®makefile
CC = g++ -I -O2 -Wall -g
TARGET = sample4a
OBJS = $(TARGET).o
SOURCE = $(TARGET).cpp
HEADER =
LIBS = -L../../drawstuff/src -L../../ode/src -L/usr/local/lib -L/usr/X11R6/lib -L/usr/X11R6/lib
INDS = -I. -I../../include -I/usr/local/include -I/usr/X11R6/include
OPTS = -lm -lode -ldrawstuff -lX11 -framework OpenGL -framework Carbon -framework AGL
$(TARGET):$(OBJS) $(HEADER)
「ã“ã“ã«Tabを入れる〠 $(CC) -o $(TARGET) $(OBJS) $(LIBS) $(INDS) $(OPTS)
$(OBJS):$(SOURCE) $(HEADER)
「ã“ã“ã«Tabを入れる〠 $(CC) -c $(SOURCE) $(LIBS) $(INDS)
clean:
「ã“ã“ã«Tabを入れるã€ã€€rm $(TARGET) $(OBJS) *.*~ *~
ã§ã‚€ã•ã‚“ã€
ãŠè¿”事ã©ã†ã‚‚ã‚りãŒã¨ã†ã”ã–ã„ã¾ã—ãŸã€‚
makefile:11: ** missing separator. Stop. ã§ã¾ã—ãŸã€‚
line 11 ã¯ï¼šã€€$(CC) -o $(TARGET) $(OBJS) $(LIBS) $(INDS) $(OPTS) ã§ã™ã€‚
jimmyã•ã‚“ã€
intelMacã„ã„ã§ã™ã。ç§ã‚‚欲ã—ã„ã®ã§ã™ãŒè²·ãˆã¾ã›ã‚“…
ã•ã¦ã€makefileãŒMac用ã®ã‚‚ã®ã§ã¯ã‚りã¾ã›ã‚“。以下ã®makefileã‚’å‚考ã«ã•れã¦ã¯ã„ã‹ãŒã§ã™ã‹ï¼Ÿç§ã¯ãŸã‚ã›ãªã„ã®ã§ã€çµæžœã‚’æ•™ãˆã¦ãã ã•ã„ã。
CC = g++ -I -O2 -Wall -g
TARGET = sample4a
OBJS = $(TARGET).o
SOURCE = $(TARGET).cpp
HEADER =
LIBS = -L../../drawstuff/src -L../../ode/src -L/usr/local/lib -L/usr/X11R6/lib -L/usr/X11R6/lib
INDS = -I. -I../../include -I/usr/local/include -I/usr/X11R6/include
OPTS = -lm -lode -ldrawstuff -lX11 -framework OpenGL -framework Carbon -framework AGL
$(TARGET):$(OBJS) $(HEADER)
$(CC) -o $(TARGET) $(OBJS) $(LIBS) $(INDS) $(OPTS)
$(OBJS):$(SOURCE) $(HEADER)
$(CC) -c $(SOURCE) $(LIBS) $(INDS)
clean:
rm $(TARGET) $(OBJS) *.*~ *~
ã§ã‚€ã•ã‚“ã€
samplesã©ã†ã‚‚ã‚りãŒã¨ã†ã”ã–ã„ã¾ã—ãŸã€‚
IntelMacã§ã¯ãªã‹ãªã‹ã†ã¾ãcompileã™ã‚‹ã®ãŒã§ããªã„ã§ã™ã€‚
makeã™ã‚‹ã¨ä»¥ä¸‹ã®errorãŒã§ã¾ã—ãŸï¼š
gcc -Wall -g -DdDOUBLE -c sample4a.cpp -L../../drawstuff/src -L../../ode/src -L/usr/X11R6/lib -L/usr/local/lib -L/usr/lib/w32api/lib -I. -I../../include -I/usr/X11R6/include -I/usr/include
In file included from ../../include/ode/ode.h:28,
from sample4a.cpp:6:
../../include/ode/config.h:264:1: warning: “dDOUBLE” redefined
:1:1: warning: this is the location of the previous definition
gcc -Wall -g -DdDOUBLE -o sample4a sample4a.o -L../../drawstuff/src -L../../ode/src -L/usr/X11R6/lib -L/usr/local/lib -L/usr/lib/w32api/lib -I. -I../../include -I/usr/X11R6/include -I/usr/include -lm -lode -ldrawstuff -lGL -lGLU
/usr/bin/ld: warning -L: directory name (/usr/lib/w32api/lib) does not exist
/usr/bin/ld: Undefined symbols:
ã©ã†ã™ã‚Œã°ã„ã„ã§ã—ょã‹ï¼Ÿç§ã®makefileã¯ã“れã§ã™ï¼š
# make file
CC = gcc -Wall -g -DdDOUBLE
TARGET = sample4a
OBJS = sample4a.o
HEADER =
LIBS = -L../../drawstuff/src -L../../ode/src -L/usr/X11R6/lib -L/usr/local/lib -L
/usr/lib/w32api/lib
INDS = -I. -I../../include -I/usr/X11R6/include -I/usr/include
OPTS = -lm -lode -ldrawstuff -lGL -lGLU
$(TARGET):$(OBJS) $(HEADER)
$(CC) -o $(TARGET) $(OBJS) $(LIBS) $(INDS) $(OPTS)
sample4a.o:sample4a.cpp $(HEADER)
$(CC) -c sample4a.cpp $(LIBS) $(INDS)
clean:
rm $(TARGET) $(OBJS) *.*~ *~
よã‚ã—ããŠé¡˜ã„ã—ã¾ã™ã€‚
ODEåˆå¿ƒè€…ã•ã‚“
コメントã‚りãŒã¨ã†ã”ã–ã„ã¾ã™ã€‚
インストールを説明ã—ãŸODE講座2ã§ä¸€éƒ¨ä½œæ¥å¿˜ã‚ŒãŒã‚りã¾ã—ãŸã€‚ã™ã¿ã¾ã›ã‚“。今ã¯è¨‚æ£æ¸ˆã¿ã§ã™ã€‚
http://demura.net/archives/2006/09/ode2.html
以下ã®ä½œæ¥ã‚’ã—ã¦ãã ã•ã„。
mingwターミナルを開ã以下ã®ã‚³ãƒžãƒ³ãƒ‰ã‚’実行ã—ã¦ãã ã•ã„。odeã®ãƒ©ã‚¤ãƒ–ラリを所定ã®ä½ç½®ã«ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã™ã‚‹ä½œæ¥ã§ã™ã€‚
$ cd /home/ユーザå/src/ode-0.7
$ make install
ã¾ãŸã¯ã€makefileã®ä»¥ä¸‹ã®è¡Œ
LIBS = -L../../drawstuff/src -L/usr/X11R6/lib -L/usr/local/lib -L/usr/lib/w32api/lib
を次ã®ã‚ˆã†ã«å¤‰æ›´ã—ã¦ãã ã•ã„。
LIBS = -L../../drawstuff/src -L../../ode/src -L/usr/X11R6/lib -L/usr/local/lib -L/usr/lib/w32api/lib
ã¤ã¾ã‚Šã€ãƒªãƒ³ã‚¯ã™ã‚‹ãƒ‘スã«../../ode/srcã‚’å«ã‚ã‚‹ã®ã§ã™ã€‚ã“ã†ã™ã‚‹ã¨make installã™ã‚‹å¿…è¦ã¯ã‚りã¾ã›ã‚“。
MINGWã§Sample1ã‚’ã†ã¾ã実行ã§ãã¾ã›ã‚“ã§ã—ãŸã€‚解決案を教ãˆã¦ã„ãŸã ã‘ãªã„ã§ã—ょã†ã‹ã€‚よã‚ã—ããŠé¡˜ã„ã„ãŸã—ã¾ã™ã€‚
$ make
c:\mingw\bin\..\lib\gcc\mingw32\3.4.2\..\..\..\..\mingw32\bin\ld.exe: cannot find -lode
collect2: ld returned 1 exit status
make: *** [sample1] Error 1
mashuã•ã‚“
testプãƒã‚°ãƒ©ãƒ ã§ã‚‚åŒæ§˜ãªã‚¨ãƒ©ãƒ¼ãŒã§ã‚‹ã¨ã„ã†ã“ã¨ã¯ï¼Œã“ã®ãƒšãƒ¼ã‚¸ã®ãƒ—ãƒã‚°ãƒ©ãƒ ã®å•題ã§ã¯ãªã„ã¨æ€ã„ã¾ã™ï¼Ž
make cleanを実行ã—ã¦ï¼Œã‚‚ã†ã„ã¡ã©ODE0.7ã‚’configureã‹ã‚‰ã‚„り直ã—,makeã—ã¦ã¯ã„ã‹ãŒã§ã—ょã†ã‹ï¼Ÿç§ã®çµŒé¨“ã§ã¯ï¼Œã“ã®ã‚¨ãƒ©ãƒ¼ãŒã§ãŸã¨ãã¯ä»–ã®ãƒ‘ソコンã‹ã‚‰ãƒã‚¤ãƒŠãƒªã‚’コピーã—ãŸã¨ãã§ã—ãŸï¼Ž
確èªã—ã¾ã™ãŒï¼ŒODE0.7ã‚’mingwã§ã‚³ãƒ³ãƒ‘イル,実行ã—ã¦ã„ã¾ã™ã?
ãŸã³ãŸã³ã™ã„ã¾ã›ã‚“。
ã“ã¡ã‚‰ã®ãƒšãƒ¼ã‚¸ã®ãƒ•ァイルをインストールã—ã¦å®Ÿè¡Œã—ã¦ã¿ã¾ã—ãŸãŒï¼Œã§ãã¾ã›ã‚“ã§ã—ãŸã€‚
実行ã™ã‚‹ã¨ã€Œcould not load acceleratodã€ã¨è¦å‘ŠãŒè¡¨ç¤ºã•れã¦ã—ã¾ã„ã¾ã™ï¼Ž
åŽŸå› ã«ã¤ã„ã¦å¿ƒå½“ãŸã‚ŠãŒã‚れã°ï¼Œãƒ¬ã‚¹ãƒãƒ³ã‚¹ã®æ–¹ãŠé¡˜ã„ã—ã¾ã™ï¼Ž
testプãƒã‚°ãƒ©ãƒ ã«åŒæ§˜ã®çµæžœã«ãªã£ã¦ã„ã‚‹ã‚‚ã®ãŒã‚りã¾ã—ãŸï¼Žï¼ˆtest_basket.exe, test_plane2d.exe)