开发过程中,免不了要用到一些第三方或者是别人写好的一些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. 微信小程序之数据缓存

    关于缓存,举个示例,假定我不是通过微信授权登录的方式,小程序又是如何识别我登录后的身份呢???效果图: 这个功能我是通过缓存实现的. 关键核心代码如下: wx.setStorage({ key: 'u ...

  2. Spring重定向

    1.使用HttpServletResponse的sendRedirect()方法. 示例: @PostMapping("/user/product/id") public void ...

  3. php 5 与7有什么区别

    PHP 7.0使用新版的ZendEngine引擎,带来了许多新的特性,其与相比,有如下特性: 性能提升:PHP7比PHP5.0性能提升了两倍. 全面一致的64位支持. 以前的许多致命错误,现在改成抛出 ...

  4. https://www.cnblogs.com/LBSer/p/3310455.html

    https://www.cnblogs.com/LBSer/p/3310455.html

  5. Flutter Dart List.map() 获取下标

    class HomePageState extends State{ final topTitles = ['审批单', '机票列表', '客服']; final topIcons = ['asset ...

  6. 取消Windows server 2008关机提示备注的方法

    打开“开始”-“运行”,在“打开”一栏中输入“gpedit.msc”命令打开组策略编辑器,依次展开“计算机配置”→“管理模板”→“系统”,双击右侧窗口出现的“显示‘关闭事件跟踪程序’”,将“未配置”改 ...

  7. [LeetCode] 1. Two Sum 两数和

    Given an array of integers, return indices of the two numbers such that they add up to a specific ta ...

  8. python json dumps datetime类型报错

    # -*- coding: utf-8 -*- import json from datetime import date, datetime class MyEncoder(json.JSONEnc ...

  9. [计算机视觉][神经网络与深度学习]SSD安装及其训练教程

    SSD的安装 在home目录下,获取SSD的代码,下载完成后有一个caffe文件夹 git clone https://github.com/weiliu89/caffe.git cd caffe g ...

  10. PHPExcel 中文使用手册详解 二

    $objPHPExcel = new \PHPExcel(); //定义配置 $topNumber = 2;//表头有几行占用 $xlsTitle = iconv('utf-8', 'gb2312', ...