zoukankan      html  css  js  c++  java
  • 引用自定义的framework

    关于静态库引用文件
    如果希望你的工程能在未来能导出成静态库,那么在你编写的时候要遵循静态库引用原则,使用这种方式。
    注意:这种引用方式必须在你的Products下静态库成黑色时候,才能编译通过。
    使用:出现问题
    1、正确引用头文件方法:
    2、关于找不到文件的报错:直接看下边
    分析:
    关于第三方库找不到文件的提示错误。简单补充下吧,别走弯路。
    首先你要确定这个错误产生的原因:大致分两种,
    一:你做的项目缺失文件,百度下,加入就解决了;
    二:你引入的第三方框架发生找不到文件错误:这样的结果分两种:
    二、一:开发第三方框架的程序人员没有做好自己的框架。尤其是在生成框架的时候,没有设置好自身属性。导致使用者用的时候出现找不到文件错误,最后迫使使用者不得不去改自己的工程配置。
    二、二:你在引入第三方框架的时候,少引用了文件。
     
     
    编译的framework,真机版只能真机使用,模拟版,只能模拟版使用,而且选择了不同的设备也会有影响。
    分析原因:
    在我们生成静态库的时候,我们选择的是iPad Retina。也就是说这个静态库在引用的时候,必须也是iPad Retina。否则Xcode编译器会找不到文件所在。
    大家可以实验下,在iPad Retina下导出静态库,在其他工程使用的时候,如果用iPad Retina跑就没有错误。如果选择其他设备就会提示找不到文件。
     
    兼容全部设备解决方法:改下静态库的兼容属性。Target: -> Build Settings ->  Architectures -> Build Active Architecture Only 全改成NO;
    Build Active Architecture Only
    这个属性设置为yes,是为了debug的时候编译速度更快,它只编译当前的architecture版本,所以会报错编译不到文件,出错("_OBJC_CLASS_$_xxxxxx", referenced from:)       
    而设置为no时,会编译所有的版本,这样就解决编译出错的问题了。      
    这个是设备对应的architecture:
    armv6:iPhone 2G/3G,iPod 1G/2G
    armv7:iPhone 3GS/4/4s,iPod 3G/4G,iPad 1G/2G/3G
    armv7s:iPhone5, iPod5
    arm64:iPhone5s
    编译出的版本是向下兼容的,比如你设置此值为yes,用iphone4编译出来的是armv7版本的,iphone5也可以运行,但是armv6的设备就不能运行。
    好了,你分析完后就好办了,我们做的这个静态库没有设置自己的兼容属性,所以就照成了这种错误。在iPad Retina的模拟器上跑就正常,换成其他的模拟设备就报错。所以改下其属性就能解决。
    Target: -> Build Settings ->  Architectures -> Build Active Architecture Only 全改成NO;
    关于制作静态库兼容多版本的设置:
     
  • 相关阅读:
    LiveGBS接入LiveQing流媒体服务实现摄像头云端录像和和直播以及大屏展示
    摄像头网络直播方案LiveGBS部署问题 使GB28181实现无插件web直播
    Linux 查看磁盘读写速度IO使用情况
    安防监控摄像头接入云端实现直播、录像和大屏展示
    H265摄像头如何实现网页直播
    解决RTMP推送时间戳问题引起HLS切片不均匀导致手机浏览器播放卡顿的问题
    H5实现无插件视频监控按需直播
    LiveQing视频云平台部署实践
    将RTSP网络摄像机进行网页和微信直播的方案
    Android虚拟机运行问题之小结
  • 原文地址:https://www.cnblogs.com/lignpeng/p/5458384.html
Copyright © 2011-2022 走看看