在打包时出现了词汇或预处理器问题,文件找不到的情况?

47

这是错误的截图

我对 iPhone 开发还不熟悉,我快要完成我的第一个应用程序了。但是当我尝试创建存档时,它提示“词法或预处理问题,找不到文件”,但在模拟器中可以正常运行,并且也已在设备上进行了测试。我已经包含了 SDWebImage 库以实现在表视图中惰性加载图像。请问有人能告诉我问题出在哪里吗?


1
从您的项目中删除单元测试,请按照以下步骤操作:从项目导航器中选择您的项目以打开项目编辑器。从目标中删除项目编辑器左侧的测试,然后按下删除键。 - Amit Saxena
13个回答

57

尝试以下几点:确保将框架及其所有头文件正确导入项目。

同时,在您的构建设置中,将始终搜索用户路径设置为YES,并确保您的用户头文件路径指向该框架。

最后,执行构建->清除并重新启动Xcode。

希望这可以帮助到您!

更新:根据SDWebImage的安装要求,需要修改Header Search Path而不是User header paths,如下图所示。

enter image description here

您是否也进行了这样的操作?我建议您从头慢慢地重新执行所有安装步骤。


我已经按照https://github.com/rs/SDWebImage中指定的设置完成了所有设置,其中指定不需要提供用户头文件路径。您能告诉我如何获取用户头文件路径以在用户头文件路径中进行设置吗? - rahul raj
是的,我按照网站上的安装步骤进行了操作。但是在归档时仍然出现了相同的错误。您能否建议我解决此问题的任何方法? - rahul raj
如果仅在归档时失败,则您的归档构建设置必须与其他构建设置不同。比较“调试”设置和您的“归档”方案中的路径。您是否在使用“发布”进行归档?尝试复制“调试”并将其用于归档。 - skram
我有同样的问题。请查看这张图片:http://i.stack.imgur.com/daXTF.png我在4.3 iOS中开发了项目,然后切换到iOS 6.0。然后Xcode就会出现那个错误。 - MinuMaster
1
清理并重新启动 Rocks! - Abhishek Bedi
显示剩余2条评论

10

文件夹名称中包含空格可能导致此问题。请确保项目中的文件夹名称中没有空格。


1
我有这个!!想要发布作为答案。。发现你的! - Maheswaran Ravisankar
1
空格也是我的问题。 我从来没有想过尝试这个解决方案。 谢谢!! - Scooter

5

在我升级到Xcode 10.1之前,我的项目一直构建得很好。然而,在更新后,构建时出现了词法或预处理器问题错误。一些XCDataModel头文件无法找到。

以下操作可以解决此问题。

进入Build Settings,Header Search Paths
将适当的值从 $(SRCROOT) non-recursive 更改为 recursive

这可以确保在构建期间还搜索子文件夹中的标头。

enter image description here


4
我在更改项目名称后遇到了这个问题。我尝试了互联网上提到的所有方法,但仍然无法解决。后来我意识到所有未找到的头文件都来自于CocoaPods,所以我使用pod install重新安装了CocoaPods,并解决了这个问题。
希望这能有所帮助。

4
我现在也遇到了同样的问题,发现我的子项目“公共头文件夹路径”设置了错误路径(与主项目使用的“头搜索路径”和“用户头搜索路径”相比)。
例如:
我的主项目如下:
Header Search Paths Debug "build/Debug-iphoneos/../../Headers" Release "build/Debug-iphoneos/../../Headers"
用户头搜索路径类似。而我的子项目(依赖项)如下:
Public Header Folder Path Debug "include/BoxSDK" Release "include/BoxSDK"
将“公共头文件夹路径”更改为“../../Headers/BoxSDK”可以解决该问题,因为主项目已经在搜索该文件夹('../../Headers')。
PS:我有一些好的截图,但在获得10个声望之前,我无法发布带有图像的答案:(

现在你的声望超过100了,你可以添加图片吗? - Muhammad Aamir Ali
不幸的是,那个问题早已不存在了,截图也随之消失 :( 你遇到了什么问题,也许我可以帮忙解决? - mdstroebel
我有一个由cocos creator IDE生成的cocos2d ios项目,我们称之为ProjectA。 ProjectA引用了cocos库项目(cocos2d.xcodeproj)。 我将ProjectA导出为一个包含所需依赖项的框架,并成功构建了该框架。我已经在另一个ProjectB中导入了该框架。 当我运行ProjectB的构建时,它给我返回了这个错误。该文件位于cocos2d.xcodeproj中。请问您能帮忙解决吗? - Kuldeep Bhimte

3
在我的案例中,我正在开发一个框架,并在其中添加了一个测试应用程序。在测试应用程序的目标->构建设置->框架搜索路径中缺少的内容是:
  • 值需要是框架路径(构建输出-.framework),在我的情况下是:"../FrameworkNameFolder/" - 2个点表示向上进入一层文件夹。

此外,在测试应用程序目标->构建阶段->链接二进制库中:
  • 我必须删除框架文件,清空项目,重新添加框架文件,编译,这也解决了问题。

0
从您的项目中删除单元测试,请按照以下步骤操作,这将解决此问题。
从项目导航器中选择您的项目以打开项目编辑器。从目标中删除左侧的测试,并按Delete键。

0
我知道这已经过时了,但我还是要插入一句话,因为它可能对某些人有用。如果您仍然可以在Finder中看到文件,请单击项目中的文件并将其删除,选择“删除引用”而不是“移动到废纸篓”。
一旦引用被删除,再次从finder中将文件拖放到您的项目中,它应该就会自动解决了。

0
这是我在重命名文件后遇到的问题。由于某种原因,它仍然在寻找旧名称的文件。我所做的是创建它抱怨的文件并将其添加到项目中。然后我进行了“项目清理”,接着是“项目构建”,并验证错误是否已消失。然后我选择新添加的文件并将它们删除。这将删除所有引用,我不再看到错误。

0

我解决了我的问题。从浏览器下载的fb sdk名字是'FacebookSDKs-iOS-4.22.0',我只需要将文件夹重命名为FacebookSDK即可。现在在构建

设置 --> 框架搜索路径

路径看起来像/Users/.../Documents/FacebookSDK(之前是/Users/.../Documents/FacebookSDKs-iOS-4.22.0)。希望这可以帮到你!


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接