私は静的ライブラリファイルを生成したXcodeでBox2Dライブラリをコンパイルしました。コンパイル結果が "undefined symbols for architecture i386"
このライブラリをモノラルタッチにリンクしましたが、コンパイルしようとすると、さまざまなソースファイルの未定義シンボルに関するエラーが発生します。
私は最初の数を見てきたし、彼らは例えば、(新しいmalloc関数/を使用してIE)ポインタの初期化文句ているように見える:
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を呼び出す2行は、ライブラリがリンクされていないときにエラーになりますが、明らかにそれは問題の解決ではありません。
他の人にも同様の問題がありましたが、すべての問題がXcodeコンパイルで発生していることがわかりましたが、この問題をモノラルタッチでどのように修正できるかはわかりません。
編集:マーク・旅館の答えを受けて、私は次のコマンドラインでlibがアップロードしています追加したい:
libには以下のようにC++でアップロードされていることを意味する必要があり-gcc_flags "-L${ProjectDir} -lBox2D -cxx -force_load
${ProjectDir}/libBox2D.a"
ドキュメンテーションWebページは-cxx – poupou
の混乱を避けるための例で更新されましたあなた! – tweetypi