找不到RestKit / RestKit.h文件错误 – 版本0.10.0

我试图让RestKitbuild立和工作,我正在失去我的头发。 我得到了可怕的“词法或预处理器问题:找不到RestKit / RestKit.h文件”消息。 我使用Xcode 4.2和我的项目是为iOS。

此前,我有debugging模式与RestKit 0.9.0完美的工作。 然后我在试图归档时遇到了问题。 在阅读这个论坛并尝试一些解决scheme后,我决定升级到0.10.0,希望能够解决这个问题。

现在,我的项目甚至没有build立在debugging模式,我得到了相同的RestKit / RestKit.h文件未find错误。

我有这个在标题searchpath下:“$(BUILT_PRODUCTS_DIR)/../../ Headers”。 你能build议(对于0.10.0版本):1)RestKit的物理位置应该在哪里? (这可能没有关系,但是哪一个为你工作 – 我希望能够反映你的设置)2)我试图把我的头部searchpath指向“/ Developer / Library / RestKit-RestKit-69adee9 /”, /开发/库/ RestKit-RestKit-69adee9 /编译”

完全困惑和沮丧..

编辑1:几个小时后,我放弃了。 编辑我的项目。 创build了一个新的项目。 重新创build文件(从prev项目复制粘贴)。 现在“RestKit not found”错误消失了! 但现在,我得到这个其他的错误:

Undefined symbols for architecture i386: "_OBJC_CLASS_$_RKObjectMapping", referenced from: objc-class-ref in myclassname1.o "_OBJC_CLASS_$_RKObjectManager", referenced from: objc-class-ref in myclassname2.o ld: symbol(s) not found for architecture i386 clang: error: linker command failed with exit code 1 (use -v to see invocation) 

我检查并确保我没有添加RestKit.framework …我不知道为什么铛错误现在正在发生

编辑2: libRestKit.a是红色的。 根据https://github.com/RestKit/RestKit/wiki/Installation-Troubleshooting确定就可以了,我删除了所有链接的依赖关系。 删除了“其他链接器标志”。 closures并重新打开Xcode。 把他们全部回来。 那个错误消失了。 也许我错过了一个框架,导致铛错误。 但是我不太可能检查和重复检查。 它现在有效。

它在debugging模式下构build和归档。 我还没有尝试过分配模式。

编辑3:苹果批准我的应用程序在第一次去它是活的! 我仍然不知道是什么原因造成了这个问题。 删除现有项目并创build新项目并复制旧文件(并定期检查构build是否通过)不能成为解决scheme。 所以我现在要解决这个问题了。

我想我可以从中看出这一点。

当你升级到0.10.0时,你改变你的头部searchpath为"$(BUILT_PRODUCTS_DIR)/../../Headers" ,对不对?

安装指南只是说这样做的项目设置 。 但是, 在许多情况下 ,包括我的,您还需要更新目标设置

目标设置将仍然具有旧的标题searchpath,并且由于某种原因决定不从项目设置inheritance。

注意你 – 它是一个彻头彻尾的黑客 – 但它让我的项目运行。

假设你已经遵循了RestKit Github的安装步骤 https://github.com/RestKit/RestKit/blob/master/README.md#quick-start-aka-tldr

在RestKit目标中,转到Build阶段 。 在“ 复制标题”下拉列表中,将所有标题文件从“项目”移动到“公开”。

清洁,生成,运行。

我find的解决scheme是不要复制和超过“$(BUILT_PRODUCTS_DIR)/../../ Headers”到您的目标的标题searchpath。

五个小时后,我删除了副本并粘贴“并手动键入他们的工作。

我最近玩了从RestKit 0.9.3升级到0.10.0,并有同样的事情。 你删除了RestKit / build目录吗? 这包含.h文件的副本,并在构build0.9.x时作为构build过程的一部分进行创build。 做产品 – >清洁似乎并没有删除这些文件。 0.10.0似乎没有创build这个构build目录。 我怀疑你的构build错误是由于这些文件仍然被拾起。

此外,为了充分回答您的问题,我将RestKit文件保存在:
(项目目录)/框架/ RestKit
这是一个git子模块,所以它包含一个特定版本的RestKit git回购的克隆。

标题searchpath是:
$(BUILT_PRODUCTS_DIR)/../../头

0.9.3的头部searchpath是:
$(SOURCE_ROOT)/ RestKit /编译

我发现这个指南很有帮助(也许这就是你已经遵循): https : //github.com/RestKit/RestKit/wiki/Installing-RestKit-in-Xcode-4.x,并注意只有libRestKit部分。一个在最新的RestKit版本的项目中,早期版本包含以下所有内容:

  • libRestKitNetwork.a
  • libRestKitObjectMapping.a
  • libRestKitSupport.a
  • libRestKitJSONParserJSONKit.a
  • libRestKitXMLParserLibxml.a
  • libRestKitCoreData.a

如果你有这些,把它们从你的项目中删除。

过去几个小时一直在打同一个问题。 什么终于为我工作(我不是说这是一个明确的解决办法,但至less这是一些尝试)。

  • 从您的项目中删除RestKit
  • closures你的项目
  • 将RestKit文件夹移到主xcodeproject旁边
  • 打开RestKit项目并构build它
  • closuresRestKit项目
  • 打开您的项目,然后将RestKit项目重新导入到xcodeproject中
  • 修复目标设置中的依赖关系和链接
  • 将$(BUILT_PRODUCTS_DIR)/../../ Headers“searchpath添加到项目设置和目标设置中。 (只有当他们在两个列表中时,它才起作用)。

这最后一步可能就是解决这个问题所需要的一切,但是由于我也在这方面拉扯了我的头发,所以我尝试了很多不同的解决scheme,不想假定最后一步是固定它的唯一原因。

(我的设置是XCode 4.3.2和OS X 10.7.3)

花了两天对这个相同的错误,并导航到每一个可能的谷歌结果我终于明白了!

这不是由于派生数据设置,在XCode 4.3.2中已经很好了。

问题是,你正在做一个#import "RKObjectMapping.h"或其他一些包括。

而是使用@class RKObjectMapping或者如果你确实需要使用<RestKit/RKObjectMapping.h>

我去了@class因为我只需要编译…

希望这个帮助!

也有这个问题。 它会build立和运行在模拟器上,但不会存档。 这是我出错的地方…

我做到了这一点:

 #import "RestKit.h" 

而不是正确的方式:

 #import <RestKit/RestKit.h> 

我今天有同样的错误。 我们所有的代码都在github仓库中,restkit文件夹被忽略,所以没有任何restkit文件在那里。 现在,当xcode打开项目,发现东西丢失,它假设所有地狱爆发。 所以,删除文件夹,克隆它,然后抓起restkit的新副本,扔在那里,瞧,一切工作。

我发现我需要手动构buildRestKit目标,以便将头文件复制到构build目录中。 显然,主项目生成不能可靠地运行子项目生成?

所以,我的步骤来解决这个问题:

  • selectRestKit运行目标
  • build立
  • 确保标题searchpath设置在所有目标(显然在项目本身是不够的)
  • build立主要项目

有一个非常类似的问题。 原来是我不小心将构build设置添加到“ 用户标题searchpath”而不是“标题searchpath”。

我的解决scheme

"$(BUILT_PRODUCTS_DIR)/../../Headers"到“目标” – >“生成设置” – >“searchpath” – >“标题search”path中时,未设置该值。

而是将值设置为用户标题searchpath。 所以,你双击标题searchpath,一些窗格出现线条,你点击+左下方,粘贴在那里的string,点击其他地方closures窗口,…什么都没有。 标题searchpath没有得到更新,但用户标题searchpath。

?!!!

所以你点击标题searchpath上的披露button。 点击属性右侧的+号并添加值…

这是一个常见的错误,会让你在解决问题之后想要自己击掌。

是的,你一定要添加"$(BUILT_PRODUCTS_DIR)/../../Headers"到你的目标的Header Search Paths ,但是不要忘记包含引号!

我正在讨论$(BUILT之后和_DIR)/../../Headers之后_DIR)/../../Headers之前的引号

如果您的构buildconfiguration名称中有一个空格(例如,我的“Ad Hoc”),并且您刚刚添加了$(BUILT_PRODUCTS_DIR)/../../Headers 而没有前导引号和尾部引号,则最终可能会得到“Lexical or Preprocessor issue:RestKit / RestKit.h file not found”问题。

这是一个问题,我不认为这个问题有足够的答案,因为如果你有这个问题,感觉就像没有什么可做的事情! 尝试所有build议的解决scheme后(他们都没有工作)。 我终于find了问题

问题是我的一个文件夹中有一个空间。 不要在您的源文件夹名称中使用空格!

 Used to be : (/Xcode projects/basicRestkit etc...) -- lots of pain and suffering changed to : (/projects/basicRestkit) -- lots of rejoicing 

这导致标题searchpath不工作,因此不find文件。 很可能有一种方法可以使用更改标题searchpath来查找甚至是空格的文件。

这可能不会帮助你,但它可以。 祝你好运。

对我来说,只有这些步骤的作品 在这里检查希望这会有所帮助。