[iOS] iOS静态库相关

转载:http://hi.baidu.com/marktian/item/39803f8f37ab13834414cff8

1. apple不允许调用外部框架和DLL,所以把源代码倒进工程或是制作静态库是两个使用开源代码的方法。

2. 模拟器和device上使用的库的架构不一样,前者是i386后者是armv6、7等。所以如果你做库的话的看用于什么。可以通过命令看别人给你的库是什么架构的。

 lipo -info /path/to/your/library.a

3. 如何导入库的头文件

C的代码,headers通常是这样使用的 #include <fuck.h>。如果我们这样使用,xcode直接报错,提示找不到这样的头文件。右击你的project 名,选择Get Info . 在build选项卡中,有search hearder path 选项。是让你告诉xcode去哪儿搜搜头文件。

 

==========

1 将静态库的.xcodeproj拖入项目的Frameworks目录下
2 将静态库的.a文件拖入Frameworks目录下,不要勾选"Copy items into ..."
3 添加"Target Dependencies"
4 添加头文件的路径到"Header Search Path"
5 调用时直接导入头文件即可
#import "JSON.h"

 

==========

xcode 4.2

1. Xcode4->Target->build phases ->Link Binary With Libraries->Add Items
2.在代码中加入相应库的头文件

 

==========

1.在framework里面直接添加库的工程文件(这一步不知道是不是一定要,这样做的话,库文件就全部能被人看见了)
2.点选左上角树型结构的总项目文件,在中间的目标文件中选择自己的项目目标文件
3.在右边选择Build Phases标签
4.在Link Binary With library里面选择库的编译文件(.a)
5.建立目标文件和库文件的链接,在Link Binary With liibrary上面的标签Target Dependencies添加library.
6.编译。

转载于:https://www.cnblogs.com/ls159789/archive/2013/05/24/3096841.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
iOS工程中引入了两个不同的静态(LibA和LibB),这两个中存在相同的函数名称时,可能会导致编译错误或运行时冲突。因为在链接(Link)阶段,编译器无法判断该调用哪个中的函数。 解决这个问题的方法有以下几种: 1. 改变函数名称:将其中一个中的函数名称修改为不同的名称,例如在LibA中将函数名修改为A_Function,这样可以避免冲突。 2. 使用命名空间(Namespace):在两个中给函数加上特定的命名空间,例如在LibA中使用namespace A {}命名空间来包裹函数,LibB中使用namespace B {}命名空间来包裹函数,这样就能区分开两个中的函数。 3. 动态加载(Dynamic loading):如果在运行时能够确定使用哪个,可以使用动态加载函数。通过使用dlopen()和dlsym()等动态链接操作函数,可以在运行时决定加载哪个,并调用对应的函数。 4. 修改链接顺序:在工程配置中,将使用的静态的链接顺序调整为优先链接需要的函数的,并排除其它的链接。这样可以确保在链接时,只会链接到指定的中的函数。 需要注意的是,以上解决方式都需要在工程配置中进行修改,并且在引用静态时要明确调用的是哪个中的函数,避免出现混淆和冲突。最好的解决方法是在引用静态前,仔细查看的文档和示例,了解的使用方式和避免冲突的最佳实践。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值