找不到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来查找甚至是空格的文件。
这可能不会帮助你,但它可以。 祝你好运。
对我来说,只有这些步骤的作品 在这里检查希望这会有所帮助。