我一直在使用以下链接中的增强框架来实现我的iPhone Xcode项目:https: //goodliffe.blogspot.com/2010/09/building-boost-framework-for-ios-iphone.html
它工作正常,但我总是得到数百个Apple Mach-O Linker(id)警告:
在__ZN5boost15program_options6detail7cmdline24handle_additional_parserERSt6vectorISsSaISsEE中直接访问全局弱符号__ZTVN5boost17bad_function_callE表示在运行时无法覆盖弱符号.这可能是由使用不同可见性设置编译的不同翻译单元引起的.
如何摆脱代码中的警告?
编辑:通过设置默认隐藏的符号 = YES,我设法摆脱了大多数警告,但还剩下3个不会消失,有人可以告诉我为什么?
再次编辑:重建后剩下的3个警告也消失了!所以我的解决方案确实有效
这个问题与此相关:"错误的codegen,指针差异"链接器错误与Xcode 4和"错误的codegen,指针差异在提升"错误在32位构建和XCode 3.2.6和4链接器错误ld:坏codegen,指针差异...到全球弱势符号
我目前正在将我的所有项目升级到Xcode4,并且我遇到了一些奇怪的问题.-如果我构建通用二进制文件或32位版本,则只会出现上述错误.如果我只坚持64位,事情就好了.我自己正在构建一个自定义静态库,现在我不在该代码中使用任何可见性设置(即属性((visibility("default")))).如果我链接该库并尝试构建项目,确切的错误是:
ld:错误的codegen,指针差异在Motor :: Core :: DefaultStoragePolicy :: DefaultStoragePolicy(myWindowContent*const&)到全局弱符号Motor :: Core :: NullPointerException :: ~NullPointerException()用于体系结构i386
它位于我的SmartPtr类中,它可以抛出NullPointerException(只是从std :: exception派生).如果我明确地将NullPointerException类的可见性设置为隐藏,那么事情编译正常,但隐藏异常可能不是很好!我尝试了以下编译器:GCC 4.2,LLVM-GCC 4.2和LLVM 2.1都存在同样的问题.在项目/目标设置中将默认隐藏的符号设置为yes不起作用(也不是我想要的).那么如何在不隐藏异常的情况下解决这个问题(这是无稽之谈).我必须忍受它,它是一个错误吗?期待您的想法,谢谢!