找不到自动链接框架

时间:2018-04-11 06:28:09

标签: ios swift xcode frameworks

我已经分叉了一个名为BTNavigationDropdownMenu的框架(适用于ios的swift项目)。一切正常,直到我试图在我创建的分支中添加依赖项到最新版本。无论我是通过podfile还是DYBadge添加其他框架(Carthage),问题都是一样的。

找不到自动链接框架DYBadge

似乎UIView扩展程序存在问题,该扩展程序是DYBadge的一部分。

DYBadge在我正在处理的主应用中工作正常(我也需要在应用目标中)。

以下错误。感谢任何正确方向的提示。

  

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

8 个答案:

答案 0 :(得分:8)

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

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

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

答案 1 :(得分:2)

我在通过测试访问第三者框架时遇到了问题。这是我的固定方法。

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

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

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

答案 2 :(得分:0)

尝试此过程 -

  1. let customAVPLayerVC = CustomAVPLayerC() customAVPLayerVC.delegate = self "Cmd + Shift + K"进行清理,然后退出Xcode。
  2. 删除缓存在终端
  3. 中运行shift + cmd + alt + k
  4. 打开项目并"rm -rf ~/Library/Developer/Xcode/DerivedData"

答案 3 :(得分:0)

如果您在一个工作区中使用迦太基和多个项目,则必须在主迦太基文件夹中添加符号链接。这将取决于您的结构,例如,如果您拥有

项目->迦太基

项目->框架-> MyImbaFramework比MyImbaFramework文件夹中的终端中的cd还要运行

ln -s ../../Carthage Carthage

答案 4 :(得分:0)

在我的情况下,Bitcode出现问题,但是Xcode无法给出准确的错误诊断,因为项目框架引用也被弄乱了。运行框架测试效果很好,但是存档时出现了自动链接错误。

从项目中删除了所有框架引用,包括它们所属的Frameworks组,再次添加它们解决了引用问题,然后我得到了位码问题,该问题在目标框架上被禁用,然后并且仅然后,归档成功了

答案 5 :(得分:0)

如果您使用在false上启用了Bitcode的框架,这也可能是错误。 仅当所有框架也都将位码启用为true时,才可以启用位码。 转到目标构建设置并禁用位码。

答案 6 :(得分:0)

我有一个类似的错误,此页面上的所有建议均无效。当指向我的测试iPhone尝试创建档案时,它发生了,当我将其更改为“ Any iOS Device”时,它可以正常工作。我怀疑这与最近增加对Apple Silicon的支持的更改有关,但我不确定如何。

答案 7 :(得分:0)

请确保您没有设置testfile的是进口XCTest的TargetMembership的主要对象,但一个测试目标: - )