第一种情况库报错:library not found for -xxxl
开发中我们经常会遇到ibrary not found for -xxxl,尤其是我们从远程仓库或者github clone下来一个项目,编译很有可能报这个错误。如下图:
image.png
library not found for - lXXX 属于iOS常见错误之一 ,lXXX中的l是library(库)的简写。
这种错误一般都是没有配置Library Search Paths 或 没有正确配置Library Search Paths导致报错所致。
解决办法:只要正确配置Library所在的准确路径即可。
关于Library Search Paths添加路径想说两点
1.如果我们指定的目录和静态库的目录完全不相关,直接到Library Search Paths下添加报错 静态库的准确磁盘路径
2.如果我们指定的目录和静态库的目录有关系。即,我们指定的目录是静态库所在目录的上级目录,或者是上上级目录。这种情况下,无需指定静态库的精确的路径,只需要把non-recursive选项修改为recursive 即可
注:recursive选项代表在我们指定的目录下递归搜索静态库。即,如果在当前目录没有搜索到静态库,那么就去当前目录的子目录下继续搜索。默认情况下是non-recursive(非递归的)
第二种情况头文件报错: xxx.h file not found
上面讲的是当我们项目导入的是.a静态库,但因为没有在 Library Search Paths 中配置.a静态库的search路径,或者是虽然配置了路径但是路径配置错误而导致出现library not found for -xxx错误的解决办法。
但我们知道,在iOS中,静态库有两种形式:.a格式的静态库和.framework格式的静态库。
那么如果我们的项目中引入了.framework格式的静态库要不要配置search路径呢?答案是肯定的,无论我们以什么方式导入.framework静态库(cocoapods的方式或者直接把framework静态库拖拽到项目中的方式),如果没有配置framework的search路径,同样会报错,但报的错误却是和.a格式的静态库有些不同,如果我们项目中引入了framework格式静态库也使用了静态库(所谓使用就是import了framework静态库中的某个头文件),但没有配置search路径,那么就会报 xxx.h file not found 这类错误。
如果我们确认设置了了build setting -> Framework Search Paths的路径后还是报错xxx.h file not found,那就需要配置build setting -> header search paths的路径
"$(SRCROOT)/Utils/RSAEncrypt(加密)/openssl"
这个路径的意思就是openssl类库在项目中所处的位置,然后加入到这里来,后面选择non-recursive即可
总结:关于 library not found for -xxxl 或'xxx.h'file not found这个问题 一般都是路径没配置,或路径不正确所致
我们需要做的就是
1.先检查一下 Build Phases - >Link Binary With Libraries ,对应的静态库有没有添加成功。
2.在Build Settings下,搜索search ,找到Framework Search Paths、Header Search Paths 、Library Search Paths查看对应的第三方库路径是否存在,不存在就添加
3.Command + Shift + K,重新编译即可。
网友评论