c++ - 在 Ubuntu 12.04 上编译 Box2D HelloWorld

标签 c++ ubuntu g++ box2d

我打算在我的 C++ 项目中使用 Box2D。我已经下载了 Box2D 的最新版本(问这个问题时为 v2.3.0.7)并成功构建了它。我可以毫无错误地运行 Testbed。

现在,我正在尝试构建 HelloWorld.cpp 示例,它位于 Box2D 源文件的 HelloWorld 文件夹中,但我不能'编译这个例子。

下面是我的编译命令:

g++ -g -Wall -L/home/viki/Desktop/collision_test/Box2D_v2.3.0/Box2D/Build/Box2D -lBox2D -I/home/viki/Desktop/collision_test/Box2D_v2.3.0/Box2D HelloWorld.cpp -o Hello

这是我得到的输出:

/tmp/cc2U314E.o: In function `main':
/home/viki/Desktop/collision_test/test/HelloWorld.cpp:37: undefined reference to `b2World::b2World(b2Vec2 const&)'
/home/viki/Desktop/collision_test/test/HelloWorld.cpp:46: undefined reference to `b2World::CreateBody(b2BodyDef const*)'
/home/viki/Desktop/collision_test/test/HelloWorld.cpp:52: undefined reference to `b2PolygonShape::SetAsBox(float, float)'
/home/viki/Desktop/collision_test/test/HelloWorld.cpp:55: undefined reference to `b2Body::CreateFixture(b2Shape const*, float)'
/home/viki/Desktop/collision_test/test/HelloWorld.cpp:61: undefined reference to `b2World::CreateBody(b2BodyDef const*)'
/home/viki/Desktop/collision_test/test/HelloWorld.cpp:65: undefined reference to `b2PolygonShape::SetAsBox(float, float)'
/home/viki/Desktop/collision_test/test/HelloWorld.cpp:78: undefined reference to `b2Body::CreateFixture(b2FixtureDef const*)'
/home/viki/Desktop/collision_test/test/HelloWorld.cpp:92: undefined reference to `b2World::Step(float, int, int)'
/home/viki/Desktop/collision_test/test/HelloWorld.cpp:104: undefined reference to `b2World::~b2World()'
/home/viki/Desktop/collision_test/test/HelloWorld.cpp:104: undefined reference to `b2World::~b2World()'
/tmp/cc2U314E.o: In function `b2PolygonShape':
/home/viki/Desktop/collision_test/Box2D_v2.3.0/Box2D/Box2D/Collision/Shapes/b2PolygonShape.h:87: undefined reference to `vtable for b2PolygonShape'
/tmp/cc2U314E.o: In function `~b2PolygonShape':
/home/viki/Desktop/collision_test/Box2D_v2.3.0/Box2D/Box2D/Collision/Shapes/b2PolygonShape.h:28: undefined reference to `vtable for b2PolygonShape'
collect2: ld returned 1 exit status

我在用

  • -L 标志用于搜索 libBox2D.a
  • -l 用于链接 Box2D
  • 的标志
  • -I 标志,用于指向 Box2D header 目录

我错过了什么?我应该添加任何特定的库或命令参数吗?

最佳答案

将 -lBox2D 放在 HelloWorld.cpp 后面

关于c++ - 在 Ubuntu 12.04 上编译 Box2D HelloWorld,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23553738/

相关文章:

linux - 在局域网中配置 LAMP 网络服务器

c++ - gcc 4.7.2 虚函数错误

c++ - 是否有与 Visual Studio 的 __declspec(novtable) 等效的 g++?

c++ - 在 C++ 或 C++11 中重新抛出类型化异常

c++ - 如何修复 "QtCharts"库文件未找到/无法包含 <QtCharts>?

android - 通过 ssh ubuntu 64 位启动 Android 模拟器时出错

linux - gdb 没有给出错误的完整描述

c++ - 使用 std::is_same 进行元编程

c++ - 从 CMAKE 调用 MIDL 编译器

已安装 PHP 扩展但未加载