美文网首页
iOS开发 经典错误之 library not found fo

iOS开发 经典错误之 library not found fo

作者: 青子衿S | 来源:发表于2020-01-15 15:41 被阅读0次

    第一种情况库报错: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,重新编译即可。

    相关文章

      网友评论

          本文标题:iOS开发 经典错误之 library not found fo

          本文链接:https://www.haomeiwen.com/subject/alstzctx.html