Xcode 4.5.1中的“找不到文件”,“链接器命令失败,退出代码为1”

时间:2013-04-11 13:54:55

标签: ios unit-testing linker-errors file-not-found

开发现有的iOS应用程序,我必须为此项目编写单元测试用例。它正在Simulator 6.0中构建和运行。 每当我尝试测试项目时,它都会显示以下错误消息。我无法确定错误。

id: file not found: /Users/Yuva/Library/Developer/Xcode/DerivedData/FlyApp-aexukpgtbathuadgxlnm/Build/Products/Debug-iphonesimulator/FlyApp.app/FlyApp
clag: error: linker command failed with exit code 1 (use -v to see invocation)

你能帮我解决这个链接器错误并测试应用吗?

10 个答案:

答案 0 :(得分:84)

这个错误让我疯狂了1.30小时

我更改了产品名称并禁用了快照选项。然后突然出现这个错误。

错误是ld:找不到文件:../。/ previousproductname.app/previousproductname

我已经按照步骤调试和修复

  1. 打开组织者删除了deriveddata,重新启动Xcode。 - 未解决

  2. 按照此链接http://twobitlabs.com/2011/06/adding-ocunit-to-an-existing-ios-project-with-xcode-4/的步骤操作 - 同样的错误,未解决。

  3. 最后更改了Scheme名称,删除了旧方案并添加了新方案,解决了我的问题。

  4. 以上所有步骤均有效。

    然后

答案 1 :(得分:35)

我遇到了同样的错误消息。原来我已经重命名了我的应用目标,并且没有将测试目标,Build Settings,Bundle Loader设置更新为我的新应用名称。

有关此设置的更多详细信息,请参阅Adding Unit Tests to an existing iOS project with Xcode 4我查看了相同的步骤,它帮助我修复了Xcode 5中的项目。

答案 2 :(得分:17)

删除您的方案,然后重新创建它(单击新图标或使用xcode的自动创建)。它对我有用。

答案 3 :(得分:17)

您必须更改了产品名称。由于您的工作区名称和产品(应用程序)名称不匹配,会发生此错误。

您只需将工作区名称替换为ProjectName-Tests target的TEST HOST Build设置中的产品(应用程序)名称,如图所示。要赶上它,请选择ProjectName-Tests目标,选择Build Settings,搜索Test Host term。

enter image description here

这是此错误的标准配置解决方案。

干杯!!

答案 4 :(得分:6)

在xcode 6上你需要:

  1. 转到产品文件夹
  2. 点击文件.xctext
  3. on" TARGETS"选择测试
  4. 并在主机应用程序中选择您的应用程序。
  5. 点击构建应用
  6. 适合我!

答案 5 :(得分:1)

哎呀!这是一个非常令人沮丧的问题,从我的XCode 8.2中突然出现。

在我的情况下,它归结为从计划中删除我的测试目标,构建并运行主应用程序,然后将测试目标读取到'测试'部分。

似乎测试目标试图在尚未构建的派生数据中找到它想要的东西。在不尝试构建测试的情况下运行应用程序也允许准备以前缺少的派生数据。

...疯狂在XCode中做了两次同样的事情并期待相同的结果:|

答案 6 :(得分:0)

您的链接器正在以下位置查找文件:/Users/Yuva/Library/Developer/Xcode/DerivedData/FlyApp-aexukpgtbathuadgxlnm/Build/Products/Debug-iphonesimulator/FlyApp.app/FlyApp

您是否按照路径确定文件是否存在?请注意,FlyApp.app可能是一个软件包,如果您从Finder查看,则必须“查看软件包内容”。如果不存在,1)您需要首先构建FlyApp.app,或者2)您的测试代码中有一些东西取决于它在哪里,这不能从您的问题中确定。

答案 7 :(得分:0)

答案取决于您的构建设置>图书馆搜索路径条目。确保那里没有列出完全合格的路径。用$ SRCROOT习语装饰它们并用双引号括起路径。如果有任何逃脱反斜杠,请务必将其删除。

做一个Clean然后Build,你应该重新开始营业。这似乎与Xcode 5.x

有关

答案 8 :(得分:0)

创建一个新方案。包ID /目标名称/可执行文件/项目名称等都是略有不同的概念。如果你改变一个(就像我做的那样),旧的方案可能仍然被设置为查找旧值作为可执行文件的名称,而构建过程可能已经更新为不再构建该可执行文件。

答案 9 :(得分:-2)

在Xcode 11中,选择产品->方案->新方案

这对我有用。 The Case of Entity Framework Core’s Odd SQL