2012-10-19 15 views
1

我得到一个编译器错误与LLVM 4.1:如何忽略外的线定义的错误在Xcode与LLVM 4.1

/Users/vibhor/src/mam/client_daemon/source/core/_osx/UtilSystem_OSX.cpp:261:32: Out-of-line definition of 'what' does not match any declaration in 'std::bad_typeid' 

以下代码:

const char* ::std::bad_typeid::what() const throw() { return NULL; } 

是否有怎样压制这个?它与GCC编译良好。

+0

没有给出更多的上下文,它有点难。 'bad_typeid'的定义是什么?也许这只是一个不匹配... –

回答

0

我原来的答案是尝试使用不同的stdlib进行编译,但完全没有基础。

它看起来像试图针对10.5 SDK进行编译,该SDK有不同于预期的bad_typeid。解决方法是围绕定义的警卫:

#if defined(MAC_OS_X_VERSION_10_6) && MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_6 
const char* ::std::bad_typeid::what() const throw() { return NULL; } 
#endif 
+0

谢谢!我试过了,但没有帮助。 –

+0

此代码是针对10.6 SDK中的错误的解决方法 - http://lists.apple.com/archives/xcode-users/2010/May/msg00183.html,因此听起来像您正在编译10.5或更低版本SDK,它*没有*具有相同的bad_typeid定义(即它没有what()声明)。我将使用消息 – Petesh

+0

中推荐的解决方法更新答案。如果您查看10.8中的typeinfo头,则看起来似乎'_ what'声明由__TARGETING_4_0_DYLIB守护ifdef – Petesh