关于静态库引用文件

如果希望你的工程能在未来能导出成静态库,那么在你编写的时候要遵循静态库引用原则,使用这种方式。
注意:这种引用方式必须在你的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;
关于制作静态库兼容多版本的设置:
 

引用自定义的framework的更多相关文章

  1. Android Studio引用自定义的framework.jar包

    1.在app/libs/目录下添加framework.jar包. 2.打开build->Edit Libraries and Dependencies,把libs/framework.jar放到 ...

  2. vim中如何引用自定义模板文件

    我们在使用vim新建文件时可以引用自定义模板,来避免重复的数据格式处理花费太多时间. 实现方法很简单,只需要2步即可:1. 在.vim/template目录放入自己的模板文件(如shellconfig ...

  3. DotNetNuke-DNN Module模块引用自定义CSS或者JS文件

    当新增一个module时,有时会引用自定义的或者第三方CSS.JS文件. 1.添加自定义的CSS时,可以直接在module的根目录下添加module.css,然后框架会自动加载此CSS: 2.这个比较 ...

  4. C程序中引用自定义的C函数模块

    原文:C程序中引用自定义的C函数模块 我们知道,刚开始接触C语言编程,一般都是在一个.c或者.cpp(以下只说.c)的文件中编写代码,其中一定会有一个入口函数, 也就是main()函数,你可以将程序代 ...

  5. Android studio怎么使用自定义的framework而避免冲突报错和点不进去报红。

    文件:xx\project_abc\video\build.gradle保证可以运行到自定义的framework而不报错,可能因为project和module名字相同所以导致下面的路径是绝对路径,其他 ...

  6. VS2017 Linux C++引用自定义的动态库

    前一篇博客讲了用系统库libpthread.so的例子,只需要在项目属性页的[C++->命令行参数]和[链接器->命令行参数]中加上对应参数(比如-pthread)即可,然后我试着引用自己 ...

  7. YII中引用自定义类

    如果通过actions方法引用其他自定义类时 <?php class LoginController extends Controller { public function actionInd ...

  8. Android Studio中如何使用自定义的framework库

    在安卓app开发中,通常不会遇到需要使用自定义framework库的情况,使用的都是标准的内核库.但也有例外,比如针对定制化的ROM,ROM厂商可能在ROM中对安卓源码做过修改,对应用层app暴露出与 ...

  9. Android XML中引用自定义内部类view的四个why

    今天碰到了在XML中应用以内部类形式定义的自定义view,结果遇到了一些坑.虽然通过看了一些前辈写的文章解决了这个问题,但是我看到的几篇都没有完整说清楚why,于是决定做这个总结. 使用自定义内部类v ...

随机推荐

  1. 【Spark学习】Apache Spark for 第三方Hadoop分发版

    Spark版本:1.1.1 本文系从官方文档翻译而来,转载请尊重译者的工作,注明以下链接: http://www.cnblogs.com/zhangningbo/p/4137979.html

  2. 惊艳的随机化方法 -World Search (homework-04)

    homeword04-word search 0. 摘要 本次作业,要求完成一个word search的程序,具体要求是: 输入:一个包含20-60个单词的文件,各单词不大于20个字母,无空格. 输出 ...

  3. angular的注入实现

    angular需要对用户的传入函数进行静态分析,抽取当中的依赖,才能工作.因此用户的函数,包括控制器函数,工厂函数,服务函数与$watch回调都只是一个模板,用于取toString,真正运行的是编译后 ...

  4. POJ 1860 Currency Exchange (bellman-ford判负环)

    Currency Exchange 题目链接: http://acm.hust.edu.cn/vjudge/contest/122685#problem/E Description Several c ...

  5. hdu 3038 How Many Answers Are Wrong

    http://acm.hdu.edu.cn/showproblem.php?pid=3038 How Many Answers Are Wrong Time Limit: 2000/1000 MS ( ...

  6. I - Control - HDU 4289 (最大流)

    题意:有N个城市,现在城市S出现了一伙歹徒,他们想运送一些炸弹到D城市,不过警方已经得到了线报知道他们的事情,不过警察不知道他们所在的具体位置,所以只能采取封锁城市的办法来阻断暴徒,不过封锁城市是需要 ...

  7. TQJson序列和还原clientdataset.data

    TQJson是QDAC开源项目的JSON对象,其特点是跨平台,功能强大. 序列 procedure TForm2.Button2Click(Sender: TObject);var AJson: TQ ...

  8. 最大流&最小割 - 专题练习

    [例1][hdu5889] - 算法结合(BFS+Dinic) 题意 \(N\)个点\(M\)条路径,每条路径长度为\(1\),敌人从\(M\)节点点要进攻\(1\)节点,敌人总是选择最优路径即最短路 ...

  9. 利用 SQL Monitor 查看语句运行状态步骤

    利用 SQL Monitor 查看语句运行状态步骤 1.确定语句被 SQL Monitor 监控 SQL> SELECT * FROM GV$SQL_MONITOR WHERE sql_id=' ...

  10. Java中的Annotation(2)----Annotation工作原理

    Java中的Annotation(2)----Annotation工作原理 分类: 编程语言2013-03-18 01:06 3280人阅读 评论(6) 收藏 举报 上一篇文章已经介绍了如何使用JDK ...