【转】Xcode添加静态库以及编译选项配置常见问题
原文网址:http://www.cnblogs.com/Quains/p/3276425.html
一,Xcode编译出现Link错误,出现"duplicate symbols for architecture i386 clang"提示.
问题:链接时,项目有重名文件.
解决:
根据错误提示,做如下检查:
1.Taraget->Build Settings->Link Binary With Libraries检查是否有重复lib.
2.全工程搜索下重名文件,决定如何删除.
二,关于Category位于静态库时,引用该静态库的工程使用Category,出现"unrecognized selector sent to class"提示.
问题:标准UNIX静态库与Objective-C之间Linker的差异.在标准的UNIX静态库内,linker symbol是依照每一个类别而产生的,但由于Category并没有真正产生一个类别,所以出错.
解决:
1.在该静态库的Taraget->Build Settings->Other Linker Flags->加上 -ObjC.
2.在使用该静态库的工程Taraget->Build Settings->Other Linker Flags->加上-all_load或-force_load.
三,编译warning:ld: warning: directory not found for option '-L'.
问题:通常是Path问题.
解决:
Taraget->Build Settings->Library Search Paths 和 Framework Search Paths,删掉编译报warning的路径即OK
四,引入(带源码的)静态库所需配置.
步骤:
1.Add Files to.. 加入静态库的.xcodeproj 文件,不要勾选Copy Items.. 选项。(可以先把源代码项目先复制到使用项目文件夹下)
2.Target->Build Phases->Target Dependecies->加静态库 && Link Binary With Libraries->加静态库.
3.配置静态库头文件路径,在Taraget->Build Settings->User Header Search Paths->配上静态库的物理路径.
[错误tips: 若出现加入的.xcodeproj无法展开,则在Xcode中关闭静态库项目即可]
PS:只有.a 和 .h的静态库,则直接拖入项目即可。
五,关于重构,解决跨层调用问题,
常用选择:
1.传参(包括静态变量的使用)
2.传回调
3.直接移动调用的代码(若代码出现在不适合的地方,移动类/方法/etc)
【转】Xcode添加静态库以及编译选项配置常见问题的更多相关文章
- Xcode添加静态库以及编译选项配置常见问题
一,Xcode编译出现Link错误,出现"duplicate symbols for architecture i386 clang"提示.问题:链接时,项目有重名文件.解决:根据 ...
- 关于cocoapods添加静态库的奇葩配置
不多说,直接上代码 当引入这个静态库时,一开始死活在编辑时找不到这个静态库. 直到看到这个贴子:http://stackoverflow.com/questions/19189463/cocoapod ...
- iOS xcode创建静态库封装自己的SDK及使用
https://www.cnblogs.com/JustForHappy/p/5773039.html 一,静态库和动态库的区别在这里就不说了,个人感觉如果是自己封装提供别人下载的话应该是静态库比较方 ...
- Xcode 创建静态库和动态库
1.linux中静态库和动态库区别: 库从本质上来说是一种可执行代码的二进制格式,可以被载入内存中执行.库分静态库和动态库两种. 静态库:这类库的名字一般是libxxx.a:利用静态函数库编译成的文件 ...
- Xcode 生成静态库相关设置:
Xcode 生成静态库相关设置: #Build Setting1. Architectures ------- Architectures -----> $(ARCHS_STANDARD) -- ...
- Qt中添加静态库.lb,.a和动态库.dll,.so,头文件和.cpp文件
添加步骤 1.-Qt Creator中,"项目"------"添加库"2.把静态库和动态库文件放到项目文件夹中3.在.pro文件中会添加如下代码: - 添加动态 ...
- IOS 在Xcode 4.x以上添加静态库
参考网站:http://my.oschina.net/edwardlau/blog/95924 常用的代码可以通过静态库进行抽出来作为公共类方法,方便在其他地方调用,一般来说我们要准备2套静态库,一套 ...
- Xcode 编译静态库
有时候,我们需要将一部分经常用到的代码提取出来用来复用,或者说需要用到c++的代码的时候,可以通过编译成静态库的方式来使用.本文中使用的Xcode版本是8.3,静态库制作过程和其他版本基本一样,可能出 ...
- xcode 制作静态库.a文件 详解
http://blog.csdn.net/kepoon/article/details/21516977 最近在做Apple的IOS开发,有开发静态库的需求,本身IOS的开发,只允许静态库或者Fram ...
随机推荐
- CSS3做小三角形
aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAXgAAAA2CAIAAABC2hVZAAAgAElEQVR4nKzcd3cbV57web+1p20FW8
- VS2013试用期结束后如何激活
在激活框中输入密钥:BWG7X-J98B3-W34RT-33B3R-JVYW9
- Ibm-jQuery教程学习笔记
一.概述 1.虽然 jQuery 本身并非一门新的语言.但是,学习其语法有助于我们熟练.灵活地使用它.回顾下我们熟悉的 CSS 语法,不难发现 jQuery 的语法与 CSS 有相似之处. jQuer ...
- Java:编码的详解
ASCII:美国信息标准信息码,用一个字节的7为表示. ISO8859-1:拉丁码表 欧洲码表 ,用一个字节的8位表示. GB2312:中国的中文编码表. GBK:中国的中文编码表升级,融合了更多的中 ...
- Eclipse集成Tomcat的配置步骤实例
使用Eclipse开发B/S结构Web应用时,必须使用Web应用服务器,常见的应用服务器有Tomcat, Jboss, WebLogic, WebSphere, SUN System Applicat ...
- 深入理解Java内存模型(四)——volatile
volatile的特性 当我们声明共享变量为volatile后,对这个变量的读/写将会很特别.理解volatile特性的一个好方法是:把对volatile变量的单个读/写,看成是使用同一个监视器锁对这 ...
- Maven —— 如何设置HTTP代理
公司需要设置代理才能上网,而运行Maven时需要下载依赖的库. 怎么办呢? 原来Maven也像IE一样,可以设置代理的. 步骤如下: ·编辑 ~/.m2/setting.xml 文件.如果该目录下没有 ...
- Oracle —— 函数 length() 和 lengthb() 的区别
先看看几个例子: select length('Oracle') from dual 结果:6 select lengthb('Oracle') from dual 结果:6 select lengt ...
- 南阳理工ACM 括号匹配问题,并求出使得括号能够匹配需要新增的最小括号数(括号匹配(二))
描述 给你一个字符串,里面只包含"(",")","[","]"四种符号,请问你需要至少添加多少个括号才能使这些括号匹配起 ...
- eclipse ADT下载地址
adt not vpn https://dl.google.com/android/eclipse/ 或 https://dl-ssl.google.com/android/eclipse/ andr ...