制作静态库
来源:互联网 发布:数控编程学习网 编辑:程序博客网 时间:2024/06/05 08:58
创建iOS静态库
简单写个打印的代码
编译前准备
这里分release与debug版本,需要设置一下
编码完成之后,选择工程中得.a文件,show in finder,这样就能找到生成的.a文件了,如图
静态库就生成了。
生成静态库需要注意的问题:
1. 如果是要公开的文件需要添加
2、如下问题载自http://blog.163.com/gene_lu/blog/static/64025421201381831134819/
原因是Build Settings中的Architectures项中的$(ARCHS_STANDARD)不含armv7s,只有armv7和arm64,好吧,另外加上一个armv7s就好了。如图:
生成静态库需要注意的问题:
1. 如果是要公开的文件需要添加
2、如下问题载自http://blog.163.com/gene_lu/blog/static/64025421201381831134819/
问题一: 静态库.a文件始终为红色,显示编译不成功。
解决办法:这是xcode的一个bug,先将编译模式设置为device,编译成功,再切换回simulator模式即可编译simulator对应的.a文件,路径为
/Users/${user_name}/Library/Developer/Xcode/DerivedData/${product_name} -aurdmbdevpxznmgvgvihwjqairej/Build/Products/Debug-iphonesimulator /libxxx.a
真机对应的.a文件在Debug-iphoneos /libxxx.a
问题二:静态库中使用了category扩展,引用静态库的工程找不到扩展的方法,报错
原因:这也是xcode的bug。。Objective-C不会为每一个objc函数生成链接符号,而是会为每一个类生成链接符号。通过category对一个已有的类进行扩展,那么链接器就不知道如何把原代码与category的代码实现关联起来,导致生成的对象无法响应属于category的消息。
解决办法:1、build settings中的Other Linker Flags添加-Objc选项。这个选项会促使链接器加载库中所有定义了Class和Category的文件。但这些额外的代码会使目标文件变大。但在64位和iOS应用程序中,linker有一个bug,这个bug会导致objc选项无效,无法从静态库中加载只定义了Category的文件 ,这就需要添加-all_load或-force_load选项。
2、网上搜了一圈,说还有更好的办法解决,来自于Three20的源代码。解决办法如下:
意思是定义一个空的class,使得包含该空class的文件能被加载,我试了试,仍然报错。。。只有先使用-force_load了/*** Add this macro before each category implementation, so we don't have to use* -all_load or -force_load to load object files from static libraries that only contain* categories and no classes.* See http://developer.apple.com/library/mac/#qa/qa2006/qa1490.html for more info.*/#define TT_FIX_CATEGORY_BUG(name) @interface TT_FIX_CATEGORY_BUG_##name @end \@implementation TT_FIX_CATEGORY_BUG_##name @end
Xcode6打静态库.a文件,不含armv7s
最近装了Xcode6,以便适配iOS8。可是打包出问题了,打好的包没有armv7s。原因是Build Settings中的Architectures项中的$(ARCHS_STANDARD)不含armv7s,只有armv7和arm64,好吧,另外加上一个armv7s就好了。如图:
0 0
- 静态库制作
- 静态库制作,使用
- 制作静态库
- linux静态库制作
- 静态库制作
- 静态库制作
- 静态库制作
- 制作iOS静态库
- xcode 制作静态库
- ios制作静态库
- Xcode 制作静态库
- 静态库制作
- Xcode制作静态库
- xcode制作静态库
- ios制作静态库
- 制作静态库详解
- Xcode5 制作静态库
- 制作静态库心得
- Java LinkedList 源码分析
- YT05-动态归划求解课后题目-1002—Super Jumping! Jumping! Jumping! -(6.21日-烟台大学ACM预备队解题报告)
- 一些常见的容易混淆的词汇
- PAT 数据结构 05-图3. 六度空间 (30)
- oracle表分区详解
- 制作静态库
- 初学struts2 出现There is no Action mapped for namespace...错误
- 【Spark】DAGScheduler源码浅析
- 解决Robotium测试中Installation error INSTALL_FAILED_VERSION_DOWNGRADE错误
- 微信企业号开发:corpsecret到底在哪块呢?
- UML类图几种关系的总结
- Codeforces 558C Amr and Chemistry(dp)
- 链表的创建、查询、删除,插入;
- YT05-动态归划求解课后题目-1003—免费馅饼 -(6.21日-烟台大学ACM预备队解题报告)