【问题标题】:Auto-Linking framework not found未找到自动链接框架
【发布时间】:2018-09-20 22:04:35
【问题描述】:

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

找不到自动链接框架DYBadge

UIView 扩展名似乎有问题,它是DYBadge 的一部分。

DYBadge 在我正在开发的主应用程序中运行良好(我在应用程序目标中也需要它)。

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

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

【问题讨论】:

    标签: ios swift xcode frameworks


    【解决方案1】:

    对我来说,这解决了它:

    转到项目 > 目标 > 构建设置(选项卡)> 构建选项(标题)

    Enable Testing Search Paths 设置为Yes

    立即备份并运行。老实说,我不确定这意味着什么,但它确实有效。

    【讨论】:

      【解决方案2】:

      对我来说,问题在于我在将项目转换为使用 Cocoapods 之前设置了“其他链接器标志”设置。为了解决这个问题,我将该字段更改为使用 $(inhereted),之后一切正常。

      【讨论】:

        【解决方案3】:

        希望这对某人有所帮助,这对我有用

        rm -rf ~/Library/Developer/Xcode/DerivedData
        rm -rf Pods
        rm Podfile.lock
        pod cache clean --all
        pod install --repo-update
        

        并清理构建文件夹

        XCode > 产品 > 清理构建文件夹

        ⌘ 命令 + ⇧ Shift + K

        然后关闭 XCode 并再次清除派生数据

        rm -rf ~/Library/Developer/Xcode/DerivedData
        

        【讨论】:

          【解决方案4】:

          确保您没有设置将 XCTest 的 TargetMembership 导入到主目标的测试文件,而是设置到测试目标:-)

          【讨论】:

            【解决方案5】:

            我遇到了类似的错误,并且此页面上的建议均无效。在指向我的测试 iPhone 时尝试创建存档时发生这种情况,当我将其更改为“任何 iOS 设备”时它工作正常。我怀疑这与最近添加对 Apple Silicon 支持的更改有关,但我不确定如何。

            【讨论】:

              【解决方案6】:

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

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

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

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

              【讨论】:

                【解决方案7】:

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

                【讨论】:

                • 该死的!非常感谢!
                【解决方案8】:

                就我而言,Bitcode 存在问题,但 Xcode 无法给出准确的错误诊断,因为项目框架引用也以某种方式搞砸了。运行框架测试运行良好,但归档导致自动链接错误。

                从项目中删除了所有框架引用,包括它们所在的Frameworks 组,将它们重新添加回来解决了引用问题,然后我遇到了位码问题,我在目标框架上禁用了它,然后只有这样,存档成功

                【讨论】:

                  【解决方案9】:

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

                  项目 -> 迦太基

                  Project -> Frameworks -> MyImbaFramework 比 cd 在 MyImbaFramework 文件夹中的终端中运行

                  ln -s ../../Carthage Carthage

                  【讨论】:

                    【解决方案10】:

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

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

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

                    【讨论】:

                    • 我在 Pod(本例中为 SQLite)遇到了这个问题,必须添加:“${PODS_CONFIGURATION_BUILD_DIR}/SQLite.swift”
                    • 我的框架搜索路径中有 $(inherited),但我的解决方法是将 $(inherited) 设置为 recursive 而不是 non-recursive
                    【解决方案11】:

                    试试这个过程 -

                    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
                    • @user3122959 你可以把这个写成答案
                    • 感谢 user3122959 的回答和@Alexander Khitev 请求将其放入帖子中。我刚才试着这样做了。
                    猜你喜欢
                    • 1970-01-01
                    • 2011-11-15
                    • 1970-01-01
                    • 2021-08-31
                    • 2016-02-22
                    • 1970-01-01
                    • 1970-01-01
                    • 2020-04-26
                    • 2023-03-05
                    相关资源
                    最近更新 更多