静态库的制作与使用

静态链接库与动态链接库都是共享代码的方式。如果采用静态链接库,则无论你愿不愿意,lib中的指令都被直接包含在最终生成的.ExE文件中了。但是若使用动态链接库,该动态链接库则不必被包含在最终的EXE文件中,EXE文件执行时可以“动态”的引用和卸载这个与EXE独立的动态链接库文件。静态链接库和动态链接库的另外一个区别在于静态链接库中不能再包含其他动态链接库或者静态库,而在动态链接库中还可以包含其他的动态或静态链接库。本次就针对静态库的制作和使用进行讲解。

首先静态库有两种,一种是对函数产生的静态库,一种是对类产生的静态库。

1.对函数产生的静态库

制作步骤:1)首先创建工程,注意选择Win32的静态链接库

2)创建相应的源文件和头文件

3)根据需要在头文件处进行函数的声明,并在头文件处实现(必须要包含相应的头文件)。

在创建好了之后,编译时我们发现并不能运行,那么静态库是怎么使用的呢?

使用步骤:

1)首先打开刚刚创建的工程(注意要编译成功),打开他的debug,就可以看见刚刚创建的静态库,后缀名为.lib

2)创建一个一般的控制应用台程序,将刚刚创建的静态库和头文件复制到新创建的工程下面

3)把静态库的头文件加载进来(点击如图所示选项,在弹出的窗口选择静态库的头文件),这样就可以看见函数的声明,但是看不见函数的实现,确保了库的隐藏功能

4)在程序中引入静态库的头文件,这时我们发现我们还是不能用这个库,怎么做呢?

两种做法:1.显式的引入静态链接库,在文件开头写上 #pragma comment(lib,"静态库的名字"),这样当我们用到函数的某一个功能时,编译器就会看程序里面有没有实现,如果没有实现就会去查看引入的库,如果库里面实现了想要调动的函数,就会调动这个函数。

2.在工程菜单下面点击设置,然后在点击链接(Link),在链接模块的末尾,加个空格,然后加入静态库的名字+.lib即可。

显式的引入静态库通用性更高,隐式的引入静态库使代码简洁。

静态库的优点是一次编译处处执行,而缺点是如果程序有任何的改动或者升级,我们就必须重新编译程序,这样在替换后才能够生效。这对版本和软件的发布十分不利。

2.对类产生的静态库

同样的先创建的Win32静态链接库文件,在头文件中声明,在源文件中实现,下面的步骤同前面函数静态库的实现。

时间: 2024-10-29 23:46:48

静态库的制作与使用的相关文章

静态库的制作详解

静态库的制作 1   静态库的存在形式: .a 和.framework 动态库的存在形式:.dylib 和.framework 2   静态库和动态库的区别: 静态库在链接的时,会被完整的复制到可执行文件中,被使用多次,就由多份拷贝. 动态库则不会被复制,只有一份,程序运行时,动态加载到内存,系统只加载一次,多个程序共用 但是:程序中如果使用自己的动态库是不允许上架的. 3   使用静态库,可以保护核心代码,将MRC的项目打包成静态库,就可以在ARC环境下直接使用. 4   静态库的特点: .a

iOS开发笔记--静态库的制作与使用

一.iOS项目中库的使用 1.开源库 * 公开源代码,能看到具体实现 *比如SDWebImage.AFNetworking 2.闭源库 * 不公开源代码,是经过编译后的二进制文件,看不到具体实现 * 主要分为:静态库.动态库(注意自己制作的动态库不能上传到appStore) 二.本文首先讲的的是静态库的制作以及使用 1.新建静态库项目 新建静态库项目选择cocoa Touch Static Library 然后编写核心代码 2.分别在真机和模拟器下编译生成对应环境的静态库 (注意真机文件夹下得静

Linux中的静态库的制作和使用

一.整体大纲 二.静态库的制作 1)命名规则        lib + 库的名字 + .a        例如:libmytest.a2)制作步骤:        1). 生成对应的.o文件 -- .c --> .o   -c        2). 将生成的.o文件打包  ar rcs + 静态库的名字(libMytest.a) + 生成的所有的.o3)发布和使用静态库:        1). 发布静态库        2). 头文件4)优缺点: 三.静态库的打包 详细制作示例可看博客:http

iOS实用技能扩展-静态库的制作与简单使用

前言:此文是关于静态库的概念描述,如何制作及简单调试使用,不同版本的说明与场景使用. 1.关于库的简介: 库可以分为2种类型 开源库 公开源代码,能看到具体实现 比如SDWebImage.AFNetworking 闭源库 不公开源代码,是经过编译后的二进制文件,看不到具体实现 主要分为:静态库.动态库 2.静态库的特点:.a+.h; 为什么制作闭源库 国内的企业,掌握有核心技术,同时是又希望更多的程序员来使用其技术,因此采用"闭源"的方式开发使用 例如:百度地图,友盟,JPush等 在

ios 静态库的制作

废话不多说直接上操作 原理在后面 在平时开发中,可能几个公司合作一个项目,但又不想让另一个公司看到自己的源代码,怎么办.这时我们就可以制作自己的静态库. 如何制作.a 新建项目:选择cocoa touch static library 把你需要制作静态库的源码添加到工程中 选择你要公开的.h 文件 点击build Phases ->左边那个"+" ->new headers phases后将你要公开的.h 文件拖入到public 中 编辑edit scheme,选择是rel

【iOS开发-115】静态库的制作以及第三方框架iOS Universal Framework,DEBUG和RELEASE

(1)概念介绍 --我们平时在项目中用的最多的就是开源的第三方库,这种库是开源的,我们不仅能用,还能查看源代码甚至可以修改源代码. --与开源库对应的就是闭源,闭源库分为动态库和静态库.动态库就是.dylib或者.framework结尾的文件.就是苹果官方提供给我们用的那些库.开发者不能在项目中使用自制的动态库,否则无法上传到APPStore. --所以,对于闭源库,我们主要讨论的是静态库.静态库的样子就是用户拿到的文件有很多头文件.h+资源包+编译过的一个二进制文件.a(.framework)

6.关于QT中的内存管理,动态的制作,动态库的调用,静态库的制作

 一  QT的内存管理 1  QT中的内存管理是QObject来管理的 2  QT中的内存管理没有cocos2dx中的引用计数 3  组件可以指定父对象 QTimer *timer = QTimer(this);   //这里的this实际上强制转换成为了QObject了. 4  每一个对象都有一个deleteLater()方法, QLineEdit* edit = new QLineEdit(this); delete edit;   //这里的delete马上调用析构函数对内存进行释放

对VC++6.0爱得深沉(三)静态库的制作与使用

[创建] 1)建立新工程(win32静态库) (2)加入.h文件于.cpp文件如图. 3)编译-构建,生成.lib文件 [使用] 1)新建普通控制台程序 2)打开项目文件夹与刚才生成的库文件夹 3)方法一: 把库的.h文件于库的.lib文件复制到本项目文件下,并用相对路径的形式编写本项目源代码如下: 方法二:用绝对路径的形式编写本项目源代码如下: 4)运行结果 ............... 至于静态库能干什么,如果有一个你自己写的函数,你经常能用到, 如果你不想每次写个项目就要重写一次,就可以

iOS中静态库的制作——使用创建静态库项目的方式创建静态库

最近公司要求写SDK,我就想把它弄成静态库的方式 我的理解:所谓静态库,就是把所有的.m文件打包成一个.a文件,这样使分享代码的时候更加简洁,重要的是别人也不会看到你.m文件中的傻B代码了 环境是Xcode6.2 iOS8.2 首先,创建一个静态库项目 删掉Xcode自动创建的同名文件,然后导入你需要做成静态库的文件 在这里我导入一个简单的输出字符串的文件 然后选择运行的设备进行编译,这里我有不理解的地方:在Xcode6.2中,当我首先选择模拟器,然后编译文件的时候,.a文件依然是红色的,说明静