'xxx.h' file not found

写在前面:

本文源自本人的学习记录整理与理解,其中参考阅读了部分优秀的博客和书籍,尽量以通俗简单的语句转述。引用到的地方如有遗漏或未能一一列举原文出处还望见谅与指出,另文章内容如有不妥之处还望指教,万分感谢。

关于 file not found 的错误,简单理解就是 xxx.h 文件在编译时未找到。

报错场景一般为导入xxx.h文件,编译后报红色警告。从严重程度上来说分为:可以运行、无法运行两种;从文件类型上来说分为:第三方文件、自定义文件两种;以下就从这里入手讨论:

1 .  第三方文件 file not found

      第三方的文件集成大部分是通过CocoaPods工具下载安装的,CocoaPods会在下载后自动把下载的三方库引入到工程中来。

(1)无法编译运行,报红色警告:

         <1>  CocoaPods集成时并未集成这个第三方

         <2>  引入头文件方式错误比如:需要以<第三方库名/头文件名.h> 但是引入时直接引入<头文件名.h> 

         <3>  链接库地址出错,无法找到准确的目标文件导致红色警告。

解决方法:TARGETS --> Build Setting -->搜索Header Search Paths 查看报错文件是否配置;如果已经配置请查看填的路径根文件夹实际路径不同。

        <4> .xcconfig中路径与实际路径不同。

如 

show the Project navigator

在底部搜索框中输入 xxx.xcconfig 点击查看内容。

去文件夹看看相应路径是否存在该文件,通常会是在别的文件夹下面。

(2)可以编译运行,报红色警告:

可以编译运行,报红色警告

           <1>  Xcode 抽风;或者等一会就自己消失了。

             解决办法:忽略,这种情况大多是编译还没有完全结束才会如此。

           < 2>  可以正常运行项目,但红色警告一直存在;这种情况99%是项目中使用了PCH文件才导致的,可以把报错的文件拷贝到其他地方测试便能够得出结论。

                解决办法:  

               (1)由于PCH文件是需要在项目中手动配置,因为苹果官方是不推荐使用PCH的。可以尝试替换掉PCH。

                 (2) 如果一定要使用PCH,请检查是否对编译环境做了区分,比如是否有添加:#ifdef__OBJC__   #endif;

         < 3 > 项目运行正常,编译正常只有在 Clean 时会出现红色警告;再次编译警告消失

           注:这种情况主要是因为Clean 引起的,Clean的作用就是清除编译过程中的中间文件、目标文件以及可执行文件,使得项目回到没有被编译之前。

2.  自定义文件

(1)无法编译运行,报红色警告:

<1> 未导入相关文件导致

<2>导入文件时未选中Add to targets 或 Added folders

<3>未添加到Compile Sources 中

解决办法:TARGETS --> Build Phasses-->Compile Sources 添加

(2)可以编译运行,报红色警告: 和第三方报错原因一致。

你可能感兴趣的:('xxx.h' file not found)