错误:_cxabiv1 :: __ si_class_type_info的libc ++ abi.dylib`vtable

时间:2013-12-23 03:05:49

标签: c++ ios cocos2d-x

我正在使用cocos2d-x为iOS 6/7构建游戏(使用Xcode 5和iOS SDK 7.0),并开始介绍一些利用继承的模式,我遇到了这个例外。

libc++abi.dylib`vtable for __cxxabiv1::__si_class_type_info:
0x284a540:  addb   %al, (%eax)
0x284a542:  addb   %al, (%eax)
0x284a544:  jo     0x284a4eb                 ; vtable for __cxxabiv1::__libcxxabi::__void + 91
0x284a546:  testb  (%edx), %al
0x284a548:  lesl   2(%edx,%eax,4), %ebx
0x284a54c:  movl   $2046984796, %edx
0x284a551:  popl   %esp

代码看起来像这样:

     for (auto enemyItr = EnemyQueue::getEnemyContainer().begin(); enemyItr != EnemyQueue::getEnemyContainer().end(); ++enemyItr)
            {
                EnemyCharacter *enemyCharacter = dynamic_cast<EnemyCharacter*>(*enemyItr);
                CCSprite *enemy = enemyCharacter->getCharacterSprite(); // inhertiance introduced to EnemyCharacter class

                CCRect enemyMeleeRect = enemy->boundingBox(); //-> exception
}

我认为这是一个链接器错误,并尝试包括libstdc ++“Link Binary with Libraries”。我也尝试在其他链接器标志中包含“-lstdc ++”,但异常仍然存在。

到底有没有?

2 个答案:

答案 0 :(得分:1)

我遇到了同样的错误,从libstdc++.dylib添加Build Phases -> Link Binary With Libraries解决了错误。希望它能帮助其他人解决这个问题。

答案 1 :(得分:0)

我认为原因是由于在cocos2d x框架中使用了C风格的回调。我已经将这些函数设置为虚拟,并希望在派生类中重写它们。但是,这导致了这个例外。我想我必须找到一个解决方法或者忘记使用OOP。