【发布时间】:2011-08-13 12:49:14
【问题描述】:
我在 Xcode 中编译了 Box2D 库,生成了一个静态库文件。
我将此库链接到 mono touch,但是当我尝试编译时,我收到有关各种源文件中未定义符号的错误。
我看过前几个,他们似乎在抱怨指针初始化(即使用 malloc/new),例如:
Undefined symbols for architecture i386:
"std::terminate()", referenced from:
b2BroadPhase::b2BroadPhase()in libBox2D.a(b2BroadPhase.o)
b2BroadPhase::~b2BroadPhase()in libBox2D.a(b2BroadPhase.o)
b2BroadPhase::~b2BroadPhase()in libBox2D.a(b2BroadPhase.o)
b2BroadPhase::b2BroadPhase()in libBox2D.a(b2BroadPhase.o)
b2Island::Solve(b2TimeStep const&, b2Vec2 const&, bool)in libBox2D.a(b2Island.o)
b2World::b2World(b2Vec2 const&, bool)in libBox2D.a(b2World.o)
b2World::SolveTOI(b2Body*) in libBox2D.a(b2World.o)
b2BroadPhase 构造函数如下所示:
b2BroadPhase::b2BroadPhase()
{
m_proxyCount = 0;
m_pairCapacity = 16;
m_pairCount = 0;
m_pairBuffer = (b2Pair*)b2Alloc(m_pairCapacity * sizeof(b2Pair));
m_moveCapacity = 16;
m_moveCount = 0;
m_moveBuffer = (int32*)b2Alloc(m_moveCapacity * sizeof(int32));
}
b2Alloc 函数很简单:
void* b2Alloc(int32 size)
{
return malloc(size);
}
注释掉调用 b2Alloc 的两行会在链接库时消除错误,但显然这不是问题的解决方案。
我发现其他人也有类似的问题,但他们的所有问题都与 Xcode 编译有关,我不确定如何通过单声道解决此问题?
编辑:为了回应 Mark Bs 的回答,我想补充一下,我正在使用以下命令行加载库:
-gcc_flags "-L${ProjectDir} -lBox2D -cxx -force_load
${ProjectDir}/libBox2D.a"
这应该意味着根据 this documentation 加载了 C++ 库
【问题讨论】:
标签: c++ ios xcode mono xamarin.ios