找不到自动链接框架

use*_*959 10 xcode frameworks ios swift

我已经分叉了一个叫做BTNavigationDropdownMenu(iOS的swift项目)的框架。一切正常,直到我尝试在我创建的分支中向最新版本添加依赖项。无论我是DYBadge通过podfile还是通过添加其他框架(),问题都是相同的Carthage

找不到自动链接框架DYBadge

UIView扩展名似乎有问题DYBadge

DYBadge 在我正在使用的主应用程序中工作正常(我在应用程序目标中也需要它)。

错误如下。感谢您对正确方向的任何提示。

ld:警告:找不到自动链接框架DYBadge架构x86_64的未定义符号:“(在DYBadge中扩展):__ ObjC.UIView.getBadge()-> DYBadge.DYBadge?”,引用自:Demo.BTNavigationDropdownMenu.updateBadge(text: Swift.String,位于:BTNavigationDropdownMenu.o中的Swift.Int)->()ld:找不到架构x86_64铛的符号:错误:链接器命令失败,退出代码为1(使用-v查看调用)

pal*_*lme 15

Xcode找不到您的框架,因为FRAMEWORK_SEARCH_PATHS可能未设置或错误(发生于我,因为我移动了Info.plist文件)。

您可以通过进入目标并修改“构建设置”来解决此问题。只需在其中搜索FRAMEWORK_SEARCH_PATHS并添加正确的选项(通常$(PROJECT_DIR)/Carthage/Build/iOS对于iOS项目)即可。$(inherited)也应该作为第一个条目进入该条目。

这是评论中@ user3122959答案的帖子,它帮助我和其他人解决了此问题,并被要求作为此问题的答案。


Md *_*vez 7

试试这个过程——

  1. "Cmd + Shift + K"shift + cmd + alt + k进行清理,然后退出 Xcode。
  2. 删除缓存"rm -rf ~/Library/Developer/Xcode/DerivedData"在终端运行
  3. 打开项目和re-build

  • 多谢。它没有帮助,但我发现由于某种原因缺少应用程序目标中的框架搜索路径,我重新添加了它们并且它起作用了。发布关闭,很抱歉给您带来麻烦。//:configuration = Debug FRAMEWORK_SEARCH_PATHS = $(inherited) $(PROJECT_DIR)/Carthage/Build/iOS //:configuration = Release FRAMEWORK_SEARCH_PATHS = $(inherited) $(PROJECT_DIR)/Carthage/Build/iOS //:completeSettings = some FRAMEWORK_SEARCH_PATHS (18认同)
  • @ user3122959 你可以把这个写成答案 (12认同)
  • 感谢 user3122959 的回答和 @Alexander Khitev 请求将其发布到帖子中。我刚才试图这样做。 (2认同)

Dec*_*nna 6

我在从测试中访问 3rd 方框架时遇到了这个问题。这是我修复它的方法。

  1. 在 Xcode 中转到: Your Unit-Test target > Build Phases > Link Binary With Libraries

  2. 在 Finder 中转到: Carthage > Build > yourframework.Framework

  3. 将框架拖入构建阶段,然后清理(cmd - shift - K)。