`

iphone项目中的静态库

    博客分类:
  • ios
阅读更多

程序编译一般需经预处理、编译、汇编和链接几个步骤。在我们的应用中,有一些公共代码是需要反复使用,就把这些代码编译为“库”文件;在链接步骤中,连接器将从库文件取得所需的代码,复制到生成的可执行文件中。这种库称为静态库,其特点是可执行文件中包含了库代码的一份完整拷贝;缺点就是被多次使用就会有多份冗余拷贝。


  静态库和动态库是两种共享程序代码的方式,它们的区别是:静态库在程序的链接阶段被复制到了程序中,和程序运行的时候没有关系;动态库在链接阶段没有被复制到程序中,而是程序在运行时由系统动态加载到内存中供程序调用。使用动态库的优点是系统只需载入一次动态库,不同的程序可以得到内存中相同的动态库的复本,因此节省了很多内存。



原文:

http://blog.163.com/dang_wenyun/blog/static/42206525201161801232247/

概要

AppStore中的 iphone 程序不允许使用动态链接库。 

如果需要在隐藏代码的前提下提供某些功能,可以使用静态链接库。


XCode项目中添加静态库的方法

右击target,选择add -> new target 

在弹出的 NewTarget 界面中选择Cocoa Touch -> Static Library ,为新 library 取个名字。

将源文件添加到这个库。可以直接拖动现存源文件,也可以右击 -> add 。注意选择新建的库为添加的 target 。

设置原项目,令其使用新建的库。

右击原项目的 target ,选择 getInfo 。

选择 General 选项卡

向 linked libraries 中添加新创建的库 (即添加 .a 文件)。

编译新建的静态库以产生 .a 文件。(右击静态库的 target ,选择build)

编译原项目,若可以调用静态库中的方法则添加成功。


怎样隐藏静态库的代码 

可以直接删除静态库中的源代码,只提交链接库文件(.a),这样原项目仍然可以编译执行。


备注:

Mac OS 下的静态链接库文件与linux 同样使用 .a 扩展名。


参考资料

Building static libraries with the iPhone SDK 


 

分享到:
评论

相关推荐

    iphone添加静态库编译教程

    3. **降低耦合度**:静态库中的代码与主应用程序相对独立,降低了不同部分之间的耦合度。 #### 三、创建静态库 1. **新建项目**: - 打开Xcode,选择“File” -> “New” -> “Project”。 - 选择“Framework & ...

    iOS静态库项目的创建和使用源码

    4. 解决依赖问题:如果静态库中还依赖其他库,需要确保这些依赖也被正确地添加到目标项目中。检查"Build Phases" -> "Link Binary With Libraries"中是否包含了所有依赖的动态库或者静态库。 三、源码分析 在提供...

    iOS静态库制作实例

    本实例主要探讨如何制作包含Category的iOS静态库,解决静态库中对Category的使用问题。 首先,让我们了解Category在Objective-C中的作用。Category是Objective-C的一个强大特性,允许我们扩展已有类的功能,而无需...

    iOS-Xcode制作静态库

    静态库是编译时链接到目标程序中的代码库,它会把库中的所有函数和数据都复制到最终的应用程序中,因此生成的app体积较大,但运行时无需依赖外部库,避免了动态库可能导致的兼容性问题。 创建静态库的步骤如下: 1...

    xcode 4 制作静态库图文详解

    在示例代码中,`AstroDiskAppDelegate`类导入了`Print.h`,并在`application:didFinishLaunchingWithOptions:`方法中调用了静态库中的`printA`和`printB`方法。这样,我们就成功地在一个iOS应用中使用了自己创建的...

    protobuf iOS静态库

    这样,你就成功地在iOS项目中集成了protobuf 2.6.1的静态库。 总之,protobuf是一种强大的数据序列化工具,适用于iOS开发。通过编译成静态库,可以方便地在项目中集成并利用其优势。在实际应用中,可以根据需求选择...

    ffmepg 2 5 3 for iOS静态库 armv7 armv7s i386 x86 64 arm64

    - 添加静态库到Xcode项目中:需要将`lib`目录下的所有库文件添加到项目的Link Binary With Libraries阶段。 - 头文件路径设置:确保Xcode知道在哪里找到FFmpeg的头文件,可以通过设置Header Search Paths实现。 - ...

    IOS 封装静态库Demo

    5. **创建头文件(Header Files)**:为了使用静态库,开发者需要知道库中暴露的接口。所以,你需要创建对应的头文件(`.h`),声明公开的类、协议、枚举等。 6. **创建示例项目**:为了演示静态库的使用,可以创建...

    Zbar(iPhone)修复识别中文乱码列子(包含静态库)

    在Xcode项目中,导入ZBar库(可以是静态库形式),并创建一个新的ViewController,负责调用ZBar的扫描接口。确保在扫描回调中,对返回的乱码结果进行修复。例如,如果原始结果是乱码,可以尝试使用`...

    银联支付64位静态库, iOS android,

    银联支付64位静态库是为iOS和Android平台提供的一种支付解决方案,它允许开发者将银联支付功能集成到自己的应用程序中。这个静态库,libUPPayPlugin.a,是银联专门为64位架构设计的,确保在最新的移动设备上能够高效...

    ios静态库问题

    - 确保所有`.h`文件的`Target Membership`设置为`Public`,这样其他项目才能通过`.h`文件来访问静态库中的功能。 3. **构建设置**: - 在`Build Settings`中,找到`User Header Search Paths`,将其值设为`$(BUILT...

    Xcode生成动态库和静态库的方法

    **静态库**在编译阶段就被链接到目标代码中,这意味着当程序运行时,该库的代码已经完全融入到程序中,不再需要外部库的支持。这种方式的优点是简单易用,但缺点是可能会导致程序体积增大,因为每个使用该库的应用都...

    FFmpeg 2.5.3 编译的静态库(arm64 armv7s armv7 x86_64 i386)。

    - 将对应的静态库文件添加到Xcode项目中。 - 设置项目的架构设置,确保包含了所有的目标架构。 - 使用C语言或者Objective-C的接口调用FFmpeg的功能。 7. **注意事项**: - 使用FFmpeg可能涉及版权问题,因为...

    ios libjpeg .a静态库

    在iOS项目中集成libjpeg .a静态库的步骤通常包括: 1. 下载libjpeg源代码,针对iOS平台进行编译,生成armv7、arm64、i386、x86_64等不同架构的.a静态库文件。 2. 使用`lipo`工具合并不同架构的静态库,创建一个fat ...

    ffmpeg2.61 编译的静态库(arm64 armv7s armv7 x86_64 i386)

    本压缩包中的静态库是专门为 iOS 设备编译的,包含了多个架构的支持,包括 arm64(适用于64位的iPhone和iPad)、armv7s(针对某些特定的32位设备)、armv7(广泛支持的32位架构)、x86_64(用于iOS模拟器)以及 i386...

    ios libx264 静态库 .a文件

    本文将详细解析"ios libx264 静态库 .a文件"的相关知识点,包括libx264库的介绍、静态库的概念、支持的架构以及如何在iOS项目中集成和使用libx264。 首先,libx264是一个开源的、高效的H.264视频编码器,广泛应用于...

    ios openssl和librtmp静态库

    4. 集成到Xcode项目:将生成的静态库文件添加到Xcode项目中,设置“Link Binary With Libraries”构建阶段,确保应用链接了这些库。 5. 调用API:在Objective-C或Swift代码中,通过导入头文件并调用库提供的函数来...

    ffmpeg静态库合并

    在iOS平台上,为了在应用中使用FFmpeg的功能,我们需要将其编译为适用于iOS设备的静态库。这里我们将详细探讨如何在iOS平台上实现FFmpeg的编译,特别是针对armv7和armv7s架构的静态库整合。 1. **环境准备**: - ...

Global site tag (gtag.js) - Google Analytics