静态链接库与动态链接库都是共享代码的方式。如果采用静态链接库,则无论你愿不愿意,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静态链接库文件,在头文件中声明,在源文件中实现,下面的步骤同前面函数静态库的实现。