ios - 无法在 iOS 项目中使用库,该库在具有相同设置的另一个项目中工作

标签 ios objective-c xcode linker-errors lipo

我被一个荒谬的基本简单问题困住了,这让我发疯了好几天!

故事是这样的:

  1. 我有一个第三方库,在我使用它时会阻止我的项目构建。
  2. 我有另一个示例项目,其中使用了这个库并且正在成功构建。
  3. 我已经检查了 Xcode 中 “Project Build Settings”“Target Build Settings” 的所有(字面上的所有)build设置,一切看起来都一样。
  4. 这是两个项目的build设置的屏幕截图:

工作项目:Working Build Settings

不工作的项目:Not Working Build Settings

  1. 这是链接器错误的屏幕截图: Linker Error 1 Linker Error 2 enter image description here
  2. 我搜索并查看了所有 lipo:can't open input file 错误问题和 ld: symbol(s) not found for architecture armv7 错误问题,但似乎没有一个答案对我有用。请不要只引用 Google 搜索结果。

  3. 我已尝试清理项目、删除并重新添加目标文件、同步两个项目上的链接框架、删除派生数据、更改仅构建事件架构设置,以及许多其他其他问题的建议。

  4. 由于相同的库文件正在同一设备、Xcode 和 SDK 上成功编译和链接,请不要提出“请求供应商提供与 arm64 等兼容的更新版本的库”之类的建议.

  5. 我在 OS X El Capitan 上运行 Xcode 7.1,如果需要仔细查看项目,我什至可以提供 TeamViewer Access。

非常感谢任何帮助,我真的坚持这一点。

提前谢谢你。

最佳答案

如果 Xcode 检测到使用 C++ 编译的源文件,则它仅在链接时包含标准 C++ 库。如果库需要使用 libc++(或类似工具)解析其某些符号,这可能会导致链接问题。

解决方法是在项目中创建一个空的 .cpp 文件来欺骗 Xcode。 (我更喜欢将“真正的”类制作成 .mm,因为重构从未对 Objective-C++ 起作用。)

关于ios - 无法在 iOS 项目中使用库,该库在具有相同设置的另一个项目中工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34117291/

相关文章:

c++ - Cocos2dx 3.3中CCArray的替换方法是什么?

ios - 搜索字典数组的简便方法

iphone - 按钮不会添加到 View 中

ios - 如何在 Objective c 中显示来自 Web View 的弹出窗口

ios - iOS OpenGLES 上 DisparityFloat16 像素格式的纹理采样器值

ios - 在 iOS 中的特定时间唤醒应用程序

iphone - 如何在sqlite查询中传递表名

c - XCode 分配不适用于 C?

iphone - 如何从 NSMutableDictionary 中删除字典数组?

iPhone 崩溃日志