开发过程中,免不了要用到一些第三方或者是别人写好的一些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 - 静态库的导入和头文件路径的设置的更多相关文章

  1. 使用ar命令删除iOS静态库重复编译的.o文件

    关于 xcode引入第三方静态类库 duplicate symbol _OBJC_XXX 重复编译错误 看这里 http://www.cnblogs.com/cocoajin/p/3917709.ht ...

  2. iOS静态库相关-封装lib

    来源:http://blog.csdn.net/zsomsom/article/details/9163635 Library介绍 基本知识 在实际的编程过程中,通常会把一些公用函数制成函数库,供其它 ...

  3. iOS静态库.a文件制作和导入使用

    iOS静态库.a文件制作: 1.新建Cocoa Touch Static Library工程 新建工程 - 选择iOS-FrameWork&Libary,选择 Cocoa Touch Stat ...

  4. 判断IOS静态库(.a文件)是否支持模拟器和真机运行

    判断IOS静态库(.a文件)是否支持模拟器和真机运行 在mac终端下,进入到.a文件目录下,然后输入: lipo -info libMyAlertView.a Architectures in the ...

  5. iOS静态库及Framework 创建

    本文转自cocoachina,尊重作者的汗水. 讲述的非常透彻,有需要的朋友可以阅读实践.转载请注明出处 //=================以下留着备份==================// 在 ...

  6. iOS静态库小结--(yoowei)

    准备知识: 1.什么是库? 库是程序代码的集合,是共享程序代码的一种方式 2.根据源代码的公开情况,库可以分为2种类型 a.开源库 公开源代码,能看到具体实现 ,比如SDWebImage.AFNetw ...

  7. iOS 静态库的封装

    参考网址:http://www.jianshu.com/p/b754709135fb http://www.jianshu.com/p/443a5b8f3894   注意:封装静态库时要注意的地方: ...

  8. iOS静态库.a总结(2017.1.24增加脚本打包方法)

    修改于:2017.1.24 1.什么是库? 库是程序代码的集合,是共享程序代码的一种方式 2.根据源代码的公开情况,库可以分为2种类型 a.开源库 公开源代码,能看到具体实现 ,比如SDWebImag ...

  9. iOS静态库 ---iOS-Apple苹果官方文档翻译

    iOS静态库 ---iOS-Apple苹果官方文档翻译 •什么是库? 库是共享程序代码的方式,一般分为静态库和动态库.静态库与动态库的区别? 静态库:链接时完整地拷贝至可执行文件中,被多次使⽤用就为什 ...

随机推荐

  1. FusionInsight,一个融合的大数据平台

    随着物联网技术和应用的普及,以运营商.互联网以及实体经济行业为代表的企业产生了越来越多的数据,大数据的发展越来越蓬勃. 从2007年开始,大数据应用成为很多企业的需求,2012年兴起并产生了大数据平台 ...

  2. Wireshark常用快捷键&&过滤器语法

    目录 一.快捷键 二.过滤器语法 1.捕获过滤器的BPF(Berkeley Packet Filter)语法 2.显示过滤器 一.快捷键 Ctrl+M 标记/取消标记 shift+ctrl+N/B 下 ...

  3. Invalid bound statement (not found) 错误原因

    对我来说,错误的原因是因为没有配置:mybatis.mapperLocations=classpath:mybatis/mapper/*Mapper.xmlmybatis.config-locatio ...

  4. 同时购入两台同款thinkpad笔记本电脑,分别使用同一账户激活office失败--------------解决方法(账户下有多个Office激活信息,重装后提示“许可证不正确或者最大激活次数”)

    如题所述,该问题曾多次与京东商城售后,京东thinkpad品牌售后,thinkpad售后等进行沟通,最后通过微软的电话激活才成功,不过在之后发现了这么一个帖子,应该是官方给出的,应该合理,没有实际验证 ...

  5. python2中的unicode()函数在python3中会报错:

    python2中的unicode()函数在python3中会报错:NameError: name 'unicode' is not defined There is no such name in P ...

  6. c++ stl bind函数介绍

    /* stl::bind 使用 */ #include <iostream> #include <string> #include <functional> /* ...

  7. 【技术】Arduino PID自整定库

    最近看到了Brett Beauregard发表的有关PID的系列文章,感觉对于理解PID算法很有帮助,于是将系列文章翻译过来!在自我提高的过程中,也希望对同道中人有所帮助.作者Brett Beaure ...

  8. [LeetCode] 290. Word Pattern 单词模式

    Given a pattern and a string str, find if str follows the same pattern. Here follow means a full mat ...

  9. VS Code 编译C++

    1.安装VS Code 2.安装插件 在左侧插件库 必须: c/c++ 插件 非必需: C++ Intellisense Include Autocomplete 3.安装编译调试环境mingw Mi ...

  10. .Net - 线程本地变量(存储)的使用

    关于C#多线程的文章,大部分都在讨论线程的开始与停止或者是多线程同步问题.多线程同步就是在不同线程中访问同一个变量或共享资源,众所周知在不使用线程同步的机制下,由于竞争的存在会使某些线程产生脏读或者是 ...