トップページ > 過去ログ > 記事閲覧
BulletPhysicsについて
名前:Dragon 日時: 2011/12/20 18:27

いまBulletを使って物理演算しようとしていて Bulletだけを使うとちゃんとコンパイルされるのですが Bulletとdxライブラリをつかうと エラーがおきます。 1>DxUseCLib_d.lib(DxUseCLibPhysics.obj) : error LNK2005: "public: virtual __thiscall btPolyhedralConvexShape::~btPolyhedralConvexShape(void)" (??1btPolyhedralConvexShape@@UAE@XZ) は既に BulletCollision.lib(btPolyhedralConvexShape.obj) で定義されています。 1>libbulletcollision_vc6_d.lib(btCollisionWorld.obj) : error LNK2005: "public: __thiscall btCollisionWorld::btCollisionWorld(class btDispatcher *,class btBroadphaseInterface *,class btCollisionConfiguration *)" (??0btCollisionWorld@@QAE@PAVbtDispatcher@@PAVbtBroadphaseInterface@@PAVbtCollisionConfiguration@@@Z) は既に BulletCollision.lib(btCollisionWorld.obj) で定義されています。 ↑こういうのが100けたくらいでます。 どうやらdxライブラリでpmdの物理演算のときにBulletを 使っていて、重複定義されているみたいです。 それで、dxライブラリでBulletをコンパイルしたlibファイル をリンクしないように DxLib.h内に #define DX_NON_BULLET_PHYSICS を入れると、エラーはかなり減って2つになりましたが↓と出ます。 1>DxUseCLib_d.lib(DxUseCLibPhysics.obj) : error LNK2005: "public: virtual __thiscall btPolyhedralConvexShape::~btPolyhedralConvexShape(void)" (??1btPolyhedralConvexShape@@UAE@XZ) は既に BulletCollision.lib(btPolyhedralConvexShape.obj) で定義されています。 1>DxUseCLib_d.lib(DxUseCLibPhysics.obj) : error LNK2001: 外部シンボル ""public: virtual float __thiscall btCollisionShape::getContactBreakingThreshold(void)const " (?getContactBreakingThreshold@btCollisionShape@@UBEMXZ)" は未解決です。 なんとか解決できないでしょうか。 回答おねがいします。

Page: 1 |

Re: BulletPhysicsについて ( No.1 )
名前:管理人 日時:2011/12/25 00:13

Bullet Physics 内の識別子の先頭に D_ を付けて Bullet Physics をコンパイルし直すという荒業で 重複定義を回避できるようになったかもしれないバージョンをアップしましたので、 よろしければお試しになってみてください m(_ _)m ( 尚、こちらを使ってコンパイルする際は DxLib.h に DX_NON_BULLET_PHYSICS を入れないでコンパイルしてください ) http://homepage2.nifty.com/natupaji/DxLib/DxLibVCTest.exe // VisualC++ 用 http://homepage2.nifty.com/natupaji/DxLib/DxLibBCCTest.exe // BorlandC++ 用 http://homepage2.nifty.com/natupaji/DxLib/DxLibGCCTest.exe // Dev-C++ 用 http://homepage2.nifty.com/natupaji/DxLib/DxLibMinGWTest.exe // MinGW 用 (中身を既存のライブラリのファイルに上書きして、BCCをお使いの 場合は『再構築』を、VCをお使いの場合は『リビルド』を、 Dev-C++をお使いの方は「Rebuild All(Ctrl+F11)」をして下さい) こちらのバージョンでもリンクエラーが発生してしまいましたら、多分 D_ 付けに漏れてしまった 識別子が原因のエラーだと思いますので、お手数で申し訳ありませんがエラー文を掲示板に載せて下さい m(_ _;m 今回のバージョンでは DX_NON_BULLET_PHYSICS を使用する必要は無いので雑談となってしまうのですが、 DX_NON_BULLET_PHYSICS を DxStatic.h に追加した上でDXライブラリ自体を再コンパイルをして作成した DxLib.lib や DxUseCLib.lib を使用すれば上記のバージョンではなくてもリンクエラーは 発生しなくなると思います ( DxLib.h に DX_NON_BULLET_PHYSICS を追加するだけですと、DXライブラリ自体は Bullet Physics を 使おうとしてしまうので )
Re: BulletPhysicsについて ( No.2 )
名前:Dragon(解決) 日時:2011/12/25 12:14

わざわざ修正バージョンをありがとうございます。 何事もなくコンパイルできました。 本当にありがとうございました。

Page: 1 |