2013-04-11 85 views
31

“链接命令退出码1失败”正在开发现有的iOS应用程序,我必须写单元测试用例这个项目。它正在模拟器6.0中建立和运行。 每当我尝试测试项目时,它都显示下面的错误消息。我无法确定确切的错误。“找不到文件”,在Xcode 4.5.1

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) 

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

回答

0

你的连接体以寻找一个文件:/Users/Yuva/Library/Developer/Xcode/DerivedData/FlyApp-aexukpgtbathuadgxlnm/Build/Products/Debug-iphonesimulator/FlyApp.app/FlyApp

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

+0

嗨。我无法看到/ Users/Yuva/Library /因为在Yuva文件夹中图书馆错过了。我该如何解决这个问题?你可以帮助我吗?谢谢。 – 2013-04-17 10:51:39

+0

出于某种原因,您编写的代码认为那里有一个文件。我知道有时DerivedData文件夹会变得混乱,也许看着Xcode的首选项 - >位置菜单项可能会清除它。 – 2013-04-17 15:20:47

+0

谢谢你的回复。现在我得到了Derived Data文件夹,然后是您的指南。 Build,Index,info.plist,Logs,scm.plist和TextInex有很多文件夹。我可以删除DerivedData文件夹项目吗?请帮帮我。谢谢。 – 2013-04-22 08:17:49

0

答案就在你的生成设置>库搜索路径条目。确保没有列出完全合格的路径。用$ SRCROOT成语来装饰它们,并用双引号括住路径。如果有任何退出反斜杠,请确保将它们移除。

做一个干净的,然后建立和你应该可以重新开业。这似乎是在Xcode 5.x的问题

35

我遇到了同样的错误消息。原来我已经重命名了我的应用程序目标,并没有将测试目标,生成设置,软件包加载程序设置更新为我的新应用程序名称。

此设置的详细信息可以在Adding Unit Tests to an existing iOS project with Xcode 4找到我回顾了相同的步骤,它帮我解决我的项目在Xcode 5

+2

我在重命名后遇到此问题。在Test Target Build Settings中更改'Bundle Loader'帮助我解决了这个问题。 – derpoliuk 2014-10-15 04:37:41

+0

同样在这里:有人重命名了应用程序,链接程序仍在寻找旧的。 – 2014-11-14 17:30:06

+1

这对我有用。对于像我这样的新手来说,坚持从“项目设置”中找到“测试目标”。你会立即在“链接”部分看到错误的“bundle loader”路径,但这不是我错误的来源,因为这些条目引用了“$(TEST_HOST)”。向下滚动到“测试”部分并修复“测试主机”条目,这将更新链接部分。 – Josh 2015-01-03 13:28:57

81

此错误驱使我疯了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. 最后改变了计划名称,删除了我的老方案,并增加了新,解决了我的问题。

以上所有步骤均有效。

然后

+14

创建一个新的方案适用于我 – onmyway133 2014-11-24 04:52:27

+6

创建一个新的方案也适用于我,也非常感谢! – Will 2014-12-08 06:12:56

+18

我有同样的问题 - 创建一个新的计划适合我。 XCode 6中的步骤转至产品选项卡,然后转到SCHEME,然后进入管理方案压力减号,然后使用+创建新方案。 – user1154390 2015-01-01 12:36:40

17

删除你的计划,然后重新创建它(单击新图标或Xcode中使用自动创建)。这个对我有用。

+0

这对我有用,我的上帝一直在敲我的头只是为了修复它, 谢谢 – arnold 2014-11-12 16:24:37

+0

@haotang你是一个生活的保护者... Thankyou非常...我已经尝试了这么多解决方案,但没有任何工作,除了这... Ty :) – 2015-01-12 09:39:26

+0

@NikhilLihla yw :) – haotang 2015-01-13 00:52:25

14

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

您只需将工作区名称替换为ProjectName-Tests目标的TEST HOST Build设置中的产品(应用程序)名称,如图中所述。要做到这一点,请选择ProjectName-Tests目标,选择Build Settings,搜索Test Host术语。

enter image description here

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

干杯!

+0

这是什么!!!!!谢谢,Kuldeep。 – 2015-07-14 19:22:21

+0

永远是我的荣幸@ThomásC。 :) – Kuldeep 2015-07-15 06:57:21

+0

这就是它..当我在产品名称中添加一个空格时发生在我身上。请记住,您不仅必须在同一路径上更改一个名称,而且还要更改两个名称从FlyApp.app/FlyApp到abcd.app/abcd – Bruce 2015-07-18 08:17:36

0

创建一个新的方案。 bundle id /目标名称/可执行文件/项目名称等等都是略有不同的概念。如果您更改了一个(与我一样),则旧方案可能仍会设置为查找旧值作为可执行文件的名称,而构建过程可能已更新为不再构建该可执行文件。

5

在Xcode中6,你需要:

  1. 去的产品文件夹
  2. 点击文件.xctext
  3. 的 “目标”,选择测试
  4. 和主机应用程序选择应用程序。
  5. 点击构建应用程序。

适合我!

0

ARGH!这是一个非常令人沮丧的问题,从我的XCode中得到了蓝色8.2

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

看来测试目标试图在尚未构建的派生数据中找到它想要的东西。运行应用程序而不尝试构建测试也可以准备先前缺少的派生数据。

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