美文网首页
【iOS开发】symbol(s) not found for x

【iOS开发】symbol(s) not found for x

作者: xiacheng | 来源:发表于2017-12-19 11:14 被阅读8次

    参考文章:

    Undefined symbols for architecture armv7

    根据里面回答,可以总结出下面几个常见的原因:
    1、新建文件或拷贝文件到你的工程中时,忘记或没有把文件加到正确的target中去。
    如下图,我在添加UVTestUtil类时,把target勾选掉后,编译时会报如下错误。


    001.png

    解决方法:
    打开工程,选择正确的target,选择build phases标签,打开Compile Sources选项,检查是否少了对应的文件。如果是,点击+号,将对应的文件加入即可。

    2、在工程中导入了一个头文件,但是没有链接对应的库。这种错误常见于引入了如QuartzCore等系统库的头文件,但是没有在工程中加入对应的库。
    解决方法:
    1) 在设置的Build Phases标签下的Link Binary With Libraries模块添加对应的库。
    2)如果你所使用的库在不在默认的搜索位置,你可以把相应的库的位置添加到LIbrary Search Paths里,并在Other Linker Flags模块添加标识,标识规则为 "-l{library_name_without_lib_and_suffix}",如要将libz.a加进去,则添加 “-lz” 标识。

    3、你所使用的静态库不能适用对应的架构。如iOS中真机一般为arm64或arm7,模拟器一般为i386。如果没有支持对应的架构,则会报此错误。
    解决方法:
    需要提供支持相应架构的库。

    总结
    遇到类似问题时,先要去看一下报错的是那个类,那个方法,是静态库还是自定义库,再去对照三个原因进行排查和修改。

    相关文章

      网友评论

          本文标题:【iOS开发】symbol(s) not found for x

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