Xcode3创建和使用iOS的dylib动态库

此文真正写于2011年4月,当时是xcode3.X版本。xcode4的路径会不同,方法请查看 Xcode4.6创建和使用iOS的dylib动态库

文中提到的压缩文件在此下载http://download.csdn.net/detail/hursing/5159352

1. 用Xcode同时打开两个文件

“/Developer/Platforms/MacOSX.platform/Developer/Library/Xcode/Specifications/MacOSX Product Types.xcspec”

“/Developer/Platforms/iPhoneOS.platform/Developer/Library/Xcode/Specifications/iPhoneOSProductTypes.xcspec”


在“MacOSX Product Types.xcspec”中找到Identifier为com.apple.product-type.library.dynamic的Item,拖拽添加到“iPhoneOSProductTypes.xcspec”的root下。(模拟器版类似)

2.用Xcode同时打开两个文件

“/Developer/Platforms/MacOSX.platform/Developer/Library/Xcode/Specifications/MacOSX Package Types.xcspec”

“/Developer/Platforms/iPhoneOS.platform/Developer/Library/Xcode/Specifications/iPhoneOS PackageTypes.xcspec”


在“MacOSX Package Types.xcspec”中找到Identifier为com.apple.package-type.mach-o-dylib的Item,拖拽添加到“iPhoneOS PackageTypes.xcspec”的root下。

3.解压Cocoa Touch Dynamic Library.zip放到/Developer/Platforms/iPhoneOS.platform/Developer/Library/Xcode/Project Templates/Library/

这是动态库的project模板,其实质是把由静态库模板创建的项目文件$ProjectName/ProjectName.xcodeproj/project.pbxproj中的字符串“com.apple.prodcut-type.library.static”改成了“com.apple.prodcut-type.library.dynamic”。

4.解压Dynamic Library.trgttmpl.zip放到/Developer/Platforms/iPhoneOS.platform/Developer/Library/Xcode/Target Templates/Cocoa Touch/

这是动态库是target模板。

5.完成以上四步即可开始创建dylib。开始前需要确保退出一次Xcode再继续。


选择Xcode->Create a new Xcode project->iOS->Library->Cocoa Touch Dynamic Library创建动态库,随意添加类和函数。要注意,必须在Groups & Files/Targets/$ProjectName的Info面板(双击该Target即会打开这个面板),把Installation Directory一栏改成@executable_path/。目的是修改加载路径为可执行目录。否则加载此dylib的app会在原路径/usr/local/lib中寻找此dylib,导致dlopen返回错误信息“image not found”。

6.随意创建一个app project。

Add->Existing Frameworks,选择生成的dylib加入到project中,并把dylib添加到Targets/$ProjectName/Copy Bundle Resources。这样dylib就会被打包到app中。

注意:App的Release版必须在Target的Info面板中把Strip Debug Symbols During Copy一栏的取消打钩。否则程序一运行即会崩溃。暂时不知道原因。Debug版原本就是取消的,所以没问题。

PS:

App可打包为ipa格式,在越狱的机器上测试通过。示例程序在Dylib.zip

一下添加或覆盖四个文件完成前四步。 解压Developer.zip后覆盖/Developer即可

时间: 2024-07-31 02:31:25

Xcode3创建和使用iOS的dylib动态库的相关文章

Xcode4.6创建和使用iOS的dylib动态库

此为xcode4的方法,xcode3的方法请查看 Xcode3创建和使用iOS的dylib动态库 找到两个目录,最好用两个finder窗口分别打开: 目录一: /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/Library/Xcode/Specifications/ 目录二: /Applications/Xcode.app/Contents/Developer/Platforms/M

[IOS]iOS中创建,使用动态库(dylib)

测试环境: xcode4.5.2   Mac OS X 10.8.2 重要:由于苹果不支持自己创建动态库,所以这里需要替换两个文件 1:iOS Device 需要替换的文件 替换路径:/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/Library/Xcode/Specifications/ 2:iOS 模拟器 需要替换的文件 替换路径:/Applications/Xcode.app/

iOS中 Framework静态库的创建和使用遇到的那些坑 韩俊强的博客

前言 网上关于Framework制作的教程数不胜数,然而都过于陈旧,最新的也是使用Xcode7的教程,而且有些设置也只给出步骤,并没有给出原因,而且按照有些教程制作出的framework还有些问题,所以我把自己制作framework的过程记录下来,并且使用的是最新的Xcode8环境.本次制作framework,包含AFN,FMDB第三方,.a文件,xib,Bundle文件,还有Category分类,几乎制作和使用framework遇到的所有坑都被我遇到了,所以,此篇博客在我这属于干货,特此分享给

框架-iOS 动态库 热更新 审核

问题描述 iOS 动态库 热更新 审核 目前我用到了热更新这一个说法,因为业务的需求,公司需要我将iOS不用提交appStore就能更新 就能更新,我排除了其他js的更新方式,用了动态库(frameWork)经过一段时间的研究,我柑橘动态库研究的差不多了!但是问题也是变多了!动态库里面我封装了几个控制器在里面,而且控制器里面是需要去网络请求数据的,我主工程里面用的AFN,我动态库里面无法去公用AFN并且,我从很多帖子上看到说苹果不允许动态库加载更新,但是2104年iOS8出来的时候,苹果不是开放

平台-关于windows下创建静态库和动态库的问题

问题描述 关于windows下创建静态库和动态库的问题 windows下的库是跨平台的吗,比如我用qt写了个动态库,可以再其他平台用吗 解决方案 Qt是跨平台的,可以在其他平台下使用. 解决方案二: 当然不是,dll只能在windows上用.但是不排除别的操作系统可以通过自身的模拟去兼容.linux下的wine连windows下的exe都能兼容. qt是跨平台的库,但是并不是二进制文件跨平台,而是相同的源代码用不同的编译器/链接器编译,实现的跨平台. 解决方案三: winfdows上的动态库,静

【视频云端】iOS库冲突的问题---动态库导入

1.什么是库 首先来看什么是库,库(Library)说白了就是一段编译好的二进制代码,加上头文件就可以供别人使用. 什么时候我们会用到库呢?一种情况是某些代码需要给别人使用,但是我们不希望别人看到源码,就需要以库的形式进行封装,只暴露出头文件.另外一种情况是,对于某些不会进行大的改动的代码,我们想减少编译的时间,就可以把它打包成库,因为库是已经编译好的二进制了,编译的时候只需要 Link 一下,不会浪费编译时间. 上面提到库在使用的时候需要 Link,Link 的方式有两种,静态和动态,于是便产

游标 sqlserver-存储过程创建临时表(表名是动态的),游标中使用了这一个临时表

问题描述 存储过程创建临时表(表名是动态的),游标中使用了这一个临时表 ALTER PROCEDURE [dbo].[P_GetBusLocation] @Date1 datetime AS BEGIN SET NOCOUNT ON; declare @VehicleNo nvarchar(50),@VGroupID int,@RouteNumber varchar(200),@TableName varchar(50),@VehicleID bigint , @OldVehicleID big

ios开发-IOS开发 能否使用C++动态库

问题描述 IOS开发 能否使用C++动态库 IOS开发.我要用到别人提供的用C++写好的代码,老师希望我能用动态库的方式,请问可以实现吗?或者需要用OC重写一遍再编译成动态库吗? 解决方案 动态库提供好接口后,也可以让其他语言来调用

net 反射 c#-我就想知道“动态创建类的实例”中的动态到底什么意思?

问题描述 我就想知道"动态创建类的实例"中的动态到底什么意思? 讲反射的地方到处都在讲一句话:动态创建类的实例,我就想知道这个"动态"到底是什么意思?怎么就叫"动态"了?