无法从Xcode链接步骤

时间:2016-12-13 16:17:44

标签: ios xcode

我正在将项目从xcode 7.3迁移到8.1,现在转换为swift 2.3(从2.2)。这是一场斗争,尤其是通过cocoapods添加的客观c框架。

我目前遇到的问题是我似乎无法摆脱链接步骤中对一个框架的引用。

当我尝试构建项目时,它在链接步骤中失败:

  ld: framework not found DateTools
clang: error: linker command failed with exit code 1 (use -v to see invocation)

我可以在失败的命令上看到这个:

... -framework CoreText -framework DateTools -framework GLKit ...

我删除了框架,目前我只是在项目中包含我需要的文件。

这是我到目前为止所做的:

  1. 清理项目
  2. 退出xcode
  3. 从Podfile中删除了框架,删除了Pods目录,然后重新安装了剩余的pod
  4. 为DateTools搜索整个项目(通过脚本)并删除了我发现的任何内容
  5. 已删除的衍生数据
  6. 重新启动计算机
  7. 但问题仍然存在。

    我找到的一件有趣的事情是,当我搜索Derived数据文件夹(删除之前)时,我执行在名为{{1的文件中查看条目-framework DateTools }}

    dgph

    我找到的是xcode使用的某种依赖图。问题是,即使我删除了派生数据,一旦我重新启动xcode,这个文件似乎会被重新创建并且仍然包含相同的条目。

    还有其他地方我应该寻找这个框架条目吗?

1 个答案:

答案 0 :(得分:1)

我能够解决这个问题!结果我在我的一个项目文件中错过了输入。我被骗了,因为我仍然期望出现一些DateTools字符串(因为我试图手动包含文件)。一旦我完全删除了与DateTools有关的所有内容,我仍然惊讶地看到一个DateTools字符串出现。

中的"-framework" "\"DateTools\"",下的条目为OTHER_LDFLAGS
~/development/ourlatitude/OurLatitude.xcodeproj/project.pbxproj 

(所以基本上就是联系人抱怨的内容)。

删除该条目后,我可以通过cocoapods重新安装DateTools。

我认为ld: framework not found XXXX

确实存在两个常见原因
  1. 由我上面的内容引起
  2. 是由于您的某个测试文件中有旧的/错误导入造成的。
  3. 例如我在清除上述内容后的下一个问题是类似的消息,但这次是由我的一个测试文件引起的:

    import ObjectMapper
    import Alamofire
    import AlamofireObjectMapper
    import OurLatitude
    

    将其更改为:

    //import ObjectMapper
    //import Alamofire
    //import AlamofireObjectMapper
    @testable import OurLatitude
    

    解决了我的上一期问题,并且我能够在xcode 8.1中使用swift 2.3进行干净的构建

    希望这会帮助其他人,或者至少我会在下次ld: framework not found XXXX时找到它