iOS:更新到 Xcode 8.3 后,编译器中C++警告
iOS: C++ warnings in compiler after updating to Xcode 8.3
我上周更新到了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.
我试图解决此警告的内容:
- 将
Symbols Hidden by Default
更改为"是"-在所有目标中 - 将
Symbols Hidden by Default
更改为否 - 在所有目标中 - 基本上这里的所有内容(尽管不完全相关(
- 清理/删除派生数据等
- 将
-fvisibility=hidden
添加到我的目标以及所有可可豆荚目标。(此处描述(
任何见解都非常感谢。提前谢谢。
2017-04-10更新:
这似乎是NewRelicAgent产生的问题。从我的项目中删除 cocoapod 会消除警告。进一步研究这个问题。
来自 New Relic 支持的响应:
我们与移动工程团队一起查看了这些警告消息。他们建议这些警告与Xcode 8.3中引入的差异有关 - 该差异不适用于Xcode 8.2中内置的最新版本的新Relic iOS代理。
他们还强调,这些警告似乎没有任何负面影响 - 但如果您发现任何其他问题,请告诉我们。
此问题可能会在代理的下一个版本中得到解决,届时它将使用 Xcode 8.3 构建。
- C/C++编译器通常会删除重复的库吗
- 模板-模板参数推导:三个不同的编译器三种不同的行为
- Win32编译器选项和内存分配
- MSVC多行宏编译器错误
- 静态数据成员的问题-修复链接错误会导致编译器错误
- C++,我收到一个无法理解的编译器错误
- 在线编译器中的分段C++没有打印消息
- 如何解决gcc编译器优化导致的centos双编译器设置中的分段错误
- C/C++预处理器是否可以检测一些编译器选项
- 是否有C++编译器选项允许激进地删除所有函数调用,并将参数传递给具有空体的函数
- C++错误C2600:无法定义编译器生成的特殊成员函数(必须首先在类中声明)
- 我需要知道编译器如何在cpp中使用析构函数
- 编译器如何区分std::vector的构造函数
- CLANG 编译器 说:变量"PTR"可能未初始化
- 告诉c++编译器该参数没有别名
- 使用仅使用一次的变量调用的复制构造函数.这可能是通过调用move构造函数进行编译器优化的情况吗
- 为什么所有C++编译器都会崩溃或挂起此代码
- 编译器如何在使用SFINAE的函数和标准函数之间确定两者是否可行
- 我收到同义重复编译器错误。我应该如何修复"类型"X"的参数与类型"X"的参数不兼容?
- 为什么C++编译器没有检测到正确声明的类?