1

我已经从 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无处不在然后进行完全重建来解决,但这并没有解决我的警告。我进行了三重检查,并且-fvisibility=hidden -fvisibility-inlines-hidden存在于 Xcode 完成的所有编译中,包括 C++ 文件、Objective C++ 文件和预编译头文件。我已经完成了完整的重建,包括为我的项目清除 Xcode 的 DerivedData。似乎没有任何帮助。

这些警告在 Xcode 4.3 下没有出现,但我没有另一台 Mac 可以方便地使用 4.3 回去进行健全性检查。我还在跑狮子。

另一个奇怪的事情是,该项目有一个外部 SCons 构建系统,它-fvisibility=hidden -fvisibility-inlines-hidden使用 Xcode 4.4 命令行工具构建所有相同的代码,并且它不报告任何这些链接器警告(两种情况下的编译器版本相同)。

我将继续挖掘,但任何专家的见解将不胜感激。也许这是我不知道的 Xcode 4.4 更改?

谢谢。

4

1 回答 1

2

事实证明我需要-fvisibility-inlines-hidden从我的 .framework 构建和 .app 构建中删除,这使得警告消失了。

于 2012-10-21T05:35:02.683 回答