zoukankan      html  css  js  c++  java
  • 程序编译运行成功,打包Archive报错 Undefined symbols for architecture armv7 _OBJC_CLASS_$_**", referenced from: objc-class-ref in **.o

    最近项目打包时报错如下

    Undefined symbols for architecture armv7:
    _OBJC_CLASS_$_DTImageTextAttachment", referenced from:
          objc-class-ref in TZJCommodityTableViewViewModel.o
      "_OBJC_CLASS_$_DTLazyImageView", referenced from:
          _OBJC_CLASS_$_ZSDTLazyImageView in ZSDTLazyImageView.o
      "_OBJC_METACLASS_$_DTLazyImageView", referenced from:
          _OBJC_METACLASS_$_ZSDTLazyImageView in ZSDTLazyImageView.o
      "_OBJC_METACLASS_$_DTAttributedTextCell", referenced from:
          _OBJC_METACLASS_$_TZJCommodityRichCell in TZJCommodityRichCell.o
          _OBJC_METACLASS_$_ZSDTCoreTextCell in ZSDTCoreTextCell.o
      "_OBJC_CLASS_$_DTAttributedTextCell", referenced from:
          _OBJC_CLASS_$_TZJCommodityRichCell in TZJCommodityRichCell.o
          _OBJC_CLASS_$_ZSDTCoreTextCell in ZSDTCoreTextCell.o

    网上找到的方法大致都是说因为项目中使用的.a或framework没有配置好的原因,配置方法如下几种,尝试配置后还是没有解决我的问题

    1.将三方库导入项目时查看是否勾选了Add to tarets,如下图

    2.如果某个类出现.o的错误日志如下图,查看是否在Build PhasesCompile Sources中有重复导入的情况,如果有把多余的删掉

    3.在Build Phases中的 Link Binary With LibrariesEmbed Frameworks里添加相应的静态库

    添加内容

    4.在Build Setting中的Other Linker Flags中 添加-Objc并在Search Path中的Framework Search PathsHeader Search Paths中配置相应的静态库所在路径,如下图

     

    后来看到一个关于armv7相关说明,于是查了一下armv7和arm64的知识

    armv7s设备: iPhone5, iPhone5C, iPad4

    arm64 设备: iPhone5S, iPad Air, iPad mini2(iPad mini with Retina Display) 之后出的到X都是arm64的设备了

    关键原因来了:因为有些三方库静态库在生成的时候并没有做armv7s的兼容,因为当下基本淘汰可以摒弃了,但是我们的项目里可能做了兼容armv7s的配置,这就导致我们在使用这类静态库打包时报错 Undefined symbols for architecture armv7:,两种方法解决,一个是在生成静态库时让静态库兼容armv7s另一个就是把自己项目里配置兼容armv7s的地方去掉

    第一种方法大家自行百度吧,下面说第二种在哪里改,看了一篇博客截图如下在Build Setting里的第一行

    但是我的项目里并没有Valid Architectures,只有一个Architectures里面有arm64和armv7s而且无法编辑如下图

    搞到这里心里想说一万句CNM,苹果的坑咋这么多,最后发现可以在Build SettingUser-Defined中添加VALID_ARCHS去配置arm64和armv7s,如下图

    至此我的问题终于解决了,希望对遇到同样问题的朋友有帮助

  • 相关阅读:
    【iCore4 双核心板_FPGA】例程八:乘法器实验——乘法器使用
    【iCore4 双核心板_ARM】例程十一:DMA实验——存储器到存储器的传输
    【iCore1S 双核心板_FPGA】例程八:触发器实验——触发器的使用
    【iCore4 双核心板_ARM】例程十:RTC实时时钟实验——显示时间和日期
    【iCore4 双核心板_ARM】例程九:ADC实验——电源监控
    WebBrowser的Cookie操作之流量刷新机
    网站受攻击的常用手段
    八爪鱼招标网的百度权重升为2了,独立IP也从0快速发展为1000
    网站添加数据出错,原来是MS SQL Server2008日志文件占据空间过大导致的
    当你的网站被疯狂攻击时你能做什么?
  • 原文地址:https://www.cnblogs.com/zk1947/p/14148512.html
Copyright © 2011-2022 走看看