【问题标题】:iOS: C++ warnings in compiler after updating to Xcode 8.3iOS:更新到 Xcode 8.3 后编译器中的 C++ 警告
【发布时间】:2017-09-05 22:00:15
【问题描述】:

我上周更新到 Xcode 8.3。我似乎无法摆脱这个编译器警告:

ld: warning: direct access in function 'std::__1::basic_filebuf<char, std::__1::char_traits<char> >::open(char const*, unsigned int)' from file '/Path/To/Derived/Data/Xcode/DerivedData/myapp/Build/Intermediates/myapp.build/Debug-iphoneos/myapp.build/Objects-normal/arm64/myapp_lto.o' to global weak symbol 'std::__1::basic_filebuf<char, std::__1::char_traits<char> >::open(char const*, unsigned int)' from file '/Path/To/Derived/Data/Xcode/DerivedData/myapp/Build/Intermediates/myapp.build/Debug-iphoneos/myapp.build/Objects-normal/arm64/myapp_lto.o' means the weak symbol cannot be overridden at runtime. This was likely caused by different translation units being compiled with different visibility settings.

我尝试解决此警告的方法:

  1. Symbols Hidden by Default 更改为 YES - 在所有目标中
  2. Symbols Hidden by Default 更改为 NO - 在所有目标中
  3. 基本上所有here(尽管不完全相关)
  4. 清理/删除派生数据/等
  5. 已将-fvisibility=hidden 添加到我的目标以及所有 cocoapod 目标。 (described here)

非常感谢任何见解。提前致谢。

2017 年 4 月 10 日更新:

这似乎是由 NewRelicAgent 产生的问题。从我的项目中删除 cocoapod 消除了警告。进一步调查。

【问题讨论】:

  • 谢谢,@NathanOliver 我实际上也看到了这篇文章。我已经检查了每个目标(包括 cocoapod 目标),并将 -fvisibility=hidden 添加到其他 c++ 链接器标志。此警告仍然存在。

标签: c++ ios xcode compiler-warnings


【解决方案1】:

来自 New Relic 支持的回应:

我们与移动工程团队一起审查了这些警告消息。他们建议这些警告与 Xcode 8.3 中引入的差异有关 - 该差异不适用于 Xcode 8.2 中内置的最新版本的 New Relic iOS 代理。

他们还强调,这些警告似乎没有任何负面影响 - 但如果您发现任何其他问题,请告诉我们。

这个问题很可能会在代理的下一个版本中得到解决,届时它将使用 Xcode 8.3 构建。

【讨论】:

    猜你喜欢
    • 2017-12-09
    • 1970-01-01
    • 2020-09-15
    • 1970-01-01
    • 2017-08-24
    • 1970-01-01
    • 1970-01-01
    • 2015-01-01
    • 1970-01-01
    相关资源
    最近更新 更多