返回

Xcode 10 更新后第三方 SDK 报错: "library not found for -libstdc++" 解决方案

IOS

前言

对于开发者来说,Xcode 更新带来的新特性固然令人兴奋,但随之而来的兼容性问题也让人头疼。最近,不少开发者在更新到 Xcode 10 后遇到了第三方 SDK 编译报错的问题,报错信息为 "library not found for -libstdc++"。本文将深入分析这一问题并提供详细的解决方案,帮助大家快速解决这个困扰。

问题根源

-libstdc++ 是 C++ 标准库中一个重要的库,它包含了 C++ 标准库的大部分实现。在 Xcode 10 中,苹果对 C++ 标准库进行了更新,导致某些第三方 SDK 与新库不兼容。当这些 SDK 试图链接到 C++ 标准库时,就会出现 "library not found for -libstdc++" 错误。

解决方案

解决此问题的方法是将第三方 SDK 的编译设置中的 C++ 标准库版本从 "Library Search Paths" 中移除,并将其添加到 "Other Linker Flags" 中。具体步骤如下:

  1. 打开项目设置: 选择 Xcode 菜单栏中的 "Product" -> "Edit Scheme"
  2. 选择目标: 在左侧的方案导航器中,选择您要编译的 target。
  3. 转到构建设置: 在右侧的设置面板中,选择 "Build Settings" 选项卡。
  4. 找到 C++ 标准库设置: 在搜索栏中输入 "C++ Standard Library",找到 "Library Search Paths""Other Linker Flags" 两个设置。
  5. 移除 C++ 标准库路径:"Library Search Paths" 中移除所有包含 /usr/lib/ 路径的项。
  6. 添加 C++ 标准库标志:"Other Linker Flags" 中添加 -lstdc++ 标志。

示例

以下是一个示例,展示了如何在 Xcode 10 中解决第三方 SDK 的 "library not found for -libstdc++" 错误:

**Library Search Paths:** 

- $(inherited)
- /path/to/third-party-sdk/lib

**Other Linker Flags:** 

- $(inherited)
- -lstdc++

注意事项

  • 确保您已正确设置了第三方 SDK 的编译设置。如果设置不正确,可能会导致其他编译错误。
  • 如果您仍然遇到问题,请尝试重新启动 Xcode 或清除 Xcode 的派生数据。
  • 如果上述方法都无法解决问题,您可能需要联系第三方 SDK 的开发者寻求支持。

结论

本文深入分析了 Xcode 10 中第三方 SDK "library not found for -libstdc++" 报错的根源,并提供了详细的解决方案。通过遵循本文中的步骤,您应该能够快速解决此问题并继续您的开发工作。如果您在实施解决方案时遇到任何困难,请随时在评论区提问。