iOS - 静态库的导入和头文件路径的设置
开发过程中,免不了要用到一些第三方或者是别人写好的一些Demo,这时就经常会用到别人写的一些静态库(.a文件)和n多个头文件(.h文件),这些文件不是简单地把它们拉到自己的工程里面就行的,还要设置一些路径。
在使用别人写的东西的时候,经常会出现各种各样变态的问题,这时最忌就是心浮气躁,一定要静下心来,慢慢解决。一般要经过以下步骤:
1.保证你已经把别人写的文件全部拉到你的工程里了。因为别人的工程运行都没问题,那你把别人写的东西拿来用也是能用的,只是可能没有把别人的文件全部(或者是你要用的那些)拉到自己的工程或者缺少某些配置而已,不用担心别人的东西不能用。
2.看看别人都用了哪些库,去到Frameworks文件里面看,如下图
大家可能看到了有.a的文件了,着就是静态库,但是在此步骤里,我们先不管这些库,我们先把除了.a以外的其它库添加进去。具体过程如下:
2.1点选你的工程
2.2在右边选择Build Phases->Link Binary With Libraries
2.3点击下面的+号,在输入框输入关键字,再单击你需要的库,选择右下角的Add即可
3.现在说说头文件路径的设置。如下图,我的工程里面明明是有这个文件的,却提示我说找不到,那是因为路径不对,它确实找不到,所以我们需要为它设置它能找到的路径。
3.1首先在桌面新建一个文件夹,我把它命名为include。然后把所有的.h的头文件拷贝到文件夹里去。在工程里Show in Finder ,把include拷贝到工程里。
3.2然后再按住include文件夹,拖到工程里去,选择每个分组的第一个选项,finish
3.3点击左列表最上面的工程,再选择右边的Build Settings,在输入框输入“sea”,就可以看到下面有Search Paths->Header Search Paths
3.4在工程里选择include文件夹,Show in Finder,然后再回到Header Search Paths页面,双击Header Search Paths的右边,会弹出一个很大的输入框
3.5把步骤3.4 Show in Finder出来的include文件整个文件夹拖进输入框,这样头文件的路径就设置完了,运行一下,刚才的错误没了。
4.在ARC出来之后,还会出现下面的问题
那是因为你的工程是支持ARC的,别人的是以前写的,还不支持ARC。但是我们可以修改一下,使它们能互相兼容。
4.1再次回到最左边,选择工程,在右边选择Build Phrases ,可以看到有Compile Sources选项,点开它,找到刚才报错的文件,双击此文件的右边,也会打开一个很大的输入框,在此输入-fno-objc-arc就行了。如果文件较多,也可以在搜索框里面输入关键字搜索
5.现在说一说静态库的导入。如果你的工程出现下面的Library not found for
这种情况,那就是缺少类库或者类库路径不对的问题了,如果你确保你已经把所有除了.a以外需要的库都按照步骤2导入了,现在就是要导入静态库了(.a文件)如下图,一块黑黑的东西
5.1在桌面上新建文件夹,我命名为lib.a。然后把所有的.a文件拷贝到lib.a文件夹,再把此文件夹拖到工程里去,和步骤3.1,3.2新建include文件夹类似。
5.2点击左列表最上面的工程,再选择右边的Build Settings,在输入框输入“sea”,就可以看到下面有Search Paths->Library Search Paths
5.3在工程里面选择lib.a文件夹Show in Finder ,再去到Library Search Paths页面,双击此项的右边,会弹出一个很大的输入框,把整个lib.a文件夹拖到输入框里去,这样静态库就添加完成了,运行一下,发现错误消失了。
附录:
1.Library not found for …(A)
1.1先在工程里查找是否存在A,如果是红色的,则删除
1.2如果A=AFNetworking,则在 Library Search Paths设置(有时候用coocpods导入时会发生这种情况),如下图
1.3可能缺少某些类库,查看官方的接入文档说明
最后,我再次强调一下,一定要保证你已经把你需要的文件全部拖到了你的工程里面去,我在使用别人的Demo的时候就曾经深受其害,明明已经做足步骤了,总是提醒说找不到某某文件,那时还在抱怨别人的东西不能用,后来休息了一下,静下心来。慢慢地按照系统的提示去找,发现我真的没把那文件拖进工程,对此我对我的抱怨表示惬意。
iOS - 静态库的导入和头文件路径的设置的更多相关文章
- 使用ar命令删除iOS静态库重复编译的.o文件
关于 xcode引入第三方静态类库 duplicate symbol _OBJC_XXX 重复编译错误 看这里 http://www.cnblogs.com/cocoajin/p/3917709.ht ...
- iOS静态库相关-封装lib
来源:http://blog.csdn.net/zsomsom/article/details/9163635 Library介绍 基本知识 在实际的编程过程中,通常会把一些公用函数制成函数库,供其它 ...
- iOS静态库.a文件制作和导入使用
iOS静态库.a文件制作: 1.新建Cocoa Touch Static Library工程 新建工程 - 选择iOS-FrameWork&Libary,选择 Cocoa Touch Stat ...
- 判断IOS静态库(.a文件)是否支持模拟器和真机运行
判断IOS静态库(.a文件)是否支持模拟器和真机运行 在mac终端下,进入到.a文件目录下,然后输入: lipo -info libMyAlertView.a Architectures in the ...
- iOS静态库及Framework 创建
本文转自cocoachina,尊重作者的汗水. 讲述的非常透彻,有需要的朋友可以阅读实践.转载请注明出处 //=================以下留着备份==================// 在 ...
- iOS静态库小结--(yoowei)
准备知识: 1.什么是库? 库是程序代码的集合,是共享程序代码的一种方式 2.根据源代码的公开情况,库可以分为2种类型 a.开源库 公开源代码,能看到具体实现 ,比如SDWebImage.AFNetw ...
- iOS 静态库的封装
参考网址:http://www.jianshu.com/p/b754709135fb http://www.jianshu.com/p/443a5b8f3894 注意:封装静态库时要注意的地方: ...
- iOS静态库.a总结(2017.1.24增加脚本打包方法)
修改于:2017.1.24 1.什么是库? 库是程序代码的集合,是共享程序代码的一种方式 2.根据源代码的公开情况,库可以分为2种类型 a.开源库 公开源代码,能看到具体实现 ,比如SDWebImag ...
- iOS静态库 ---iOS-Apple苹果官方文档翻译
iOS静态库 ---iOS-Apple苹果官方文档翻译 •什么是库? 库是共享程序代码的方式,一般分为静态库和动态库.静态库与动态库的区别? 静态库:链接时完整地拷贝至可执行文件中,被多次使⽤用就为什 ...
随机推荐
- svg入门详解
一.svg是什么? SVG 意为可缩放矢量图形(Scalable Vector Graphics). SVG 是使用 XML 来描述二维图形和绘图程序的语言. SVG 图像在放大或改变尺寸的情况下其图 ...
- spring boot后端使用fastjson,错误代码415, 500
$.post({ url: "/register", dataType: "json", contentType: "application/json ...
- 作业——10 分布式文件系统HDFS 练习
作业的要求来自于:https://edu.cnblogs.com/campus/gzcc/GZCC-16SE2/homework/3292 利用Shell命令与HDFS进行交互 以”./bin/dfs ...
- JAVA学习网站分享
好久没用博客园了 最近工作不忙了,可以花时间自己学习知识提升自己,所以开始查找各种资料 java资源查找网站: http://www.java1234.com/ 前端学习网站: ...
- GWAS Catalog数据库简介
GWAS Catalog The NHGRI-EBI Catalog of published genome-wide association studies EBI负责维护的一个收集已发表的GWAS ...
- nginx日志切割和日志清理
##########################日志切割################################1.上传脚本到/usr/local/nginx/logs/下 2.并附执行权 ...
- Ubuntu / CentOS 安装 Anaconda 并创建虚拟环境
Anaconda可以很好地帮我们管理Python的虚拟环境,Windows上操作极其方便,现在讲一下 Ubuntu 和 CentOS 上的使用方法 ubuntu 安装Anaconda版本 安装方法一: ...
- matlab学习笔记8 基本绘图命令-LineSpec线条设定
一起来学matlab-matlab学习笔记8 基本绘图命令_4 LineSpec线条设定 觉得有用的话,欢迎一起讨论相互学习~Follow Me 绘图函数接受线条设定作为参数并相应地修改生成的图形.您 ...
- 导入一个eclipse的java项目到IDEA报Cannot find JDK '1.7' for module 'TEST'
解决办法: 右键你的项目--------------->OPen module settings 将dependencies里面的module sdk改成你安装的java版本就可以了(比如我电脑 ...
- [LeetCode] 93. Restore IP Addresses 复原IP地址
Given a string containing only digits, restore it by returning all possible valid IP address combina ...