我已经从Xcode 4.3迁移到刚刚发布的新4.4版本,现在在构建框架时会收到几十个这种性质的链接器警告:
Direct access in <some method> to global weak symbol <some other method>
means the weak symbol cannot be overridden at runtime. This was likely
caused by different translation units being compiled with different
visibility settings.
关于此警告还有一些其他问题似乎可以通过确保-fvisibility=hidden -fvisibility-inlines-hidden
在任何地方然后进行完全重建来解决,但这并没有解决我的情况下的警告。我已经对Xcode完成的所有编译进行了三重检查并且-fvisibility=hidden -fvisibility-inlines-hidden
,包括C ++文件,Objective C ++文件和预编译头文件。我已完成全面重建,包括为我的项目消除Xcode的DerivedData。似乎没有任何帮助。
这些警告在Xcode 4.3下没有出现,但是我没有另外一台带有4.3的Mac便于返回并进行健全性检查。我还在跑狮子。
另一个奇怪的事情是该项目有一个外部SCons构建系统,使用Xcode 4.4命令行工具使用-fvisibility=hidden -fvisibility-inlines-hidden
构建所有相同的代码,并且它不报告任何这些链接器警告(相同的编译器)在两种情况下的版本)。
我将继续挖掘,但任何专家的见解将不胜感激。也许这是我不知道的Xcode 4.4改变?
感谢。
答案 0 :(得分:2)
事实证明我需要从我的.framework版本和.app版本中删除-fvisibility-inlines-hidden
,这会使警告消失。