此处仅以VS2010为例,详细说明一下如何在VS环境下生成和使用C++的静态库与动态库。Qt下生成和使用静态和动态库后续再讲。 本文仅供初学者参考,如果有问题欢迎大家指正。 首先简单地理解一下静态库与动态库,以及两者的区别。 静态库(*.lib): 将*.cpp文件中的函数的地址和定义,以及函数之间的链接关系通通打包,生成的一个二进制文件; 动态库(*.lib+*.dll): 动态库的*.lib文件,打包的只是*.cpp文件中函数的地址和链接,函数的具体定义打包在*.dll文件中。 联系: 1.二者都不包含函数的声明部分,因此调用这两种库的时候,都需要包含相应的头文件(*.h); 2.静态库和动态库的*.lib文件,在生成可执行文件(*.exe)的时候,都将被打包进*.exe文件中; 区别: 1.静态库的*.lib文件远大于动态库的*.lib文件; 2.动态库的*.dll文件作为可执行文件*.exe的附加文件加入到程序中,一般放在*.exe的同级目录下。
简单地介绍完这两种库,下面来看看在VS下是怎么生成和使用的。
静态库: 生成: 1.新建一个空的Visual Studio 2010 ,Visual C++, Win32 控制台工程,取名为“testlib”; (你可以在向导中选择静态库选项,也可以在后续的设置中设置生成静态库,这里我们在后面进行设置); 2.构造一个类用于测试,这里叫做“CAdd”类,进行的是整数的加法运算,声明和实现分别保存在文件“add.h”和 “add.cpp”中: “add.h”:
"add.cpp":
可以在“属性”->"C++"->"预编译头"下选择“不使用预编译头”去掉cpp文件的“stdafix.h”的添加要求
3. 选择编译为静态库: 在“属性”->“配置属性"->”常规“->”配置类型“下选择”静态库(.lib)“(默认是"应用程序(.exe)"),在此界面上可以更改输出文件(.lib)所在的目录, 以及lib文件的名称(默认是工程的名称):
4.选择生成解决方案,这时在你刚刚选择的输出文件夹下(这里是lib文件夹),已经生成了静态库文件,add.lib
使用: 使用很简单: 1.属性-》配置属性-》C/C++->常规-》附加包含目录,填写”add.h“所在目录; 2.属性-》配置属性-》链接器-》附加依赖项,填写”add.lib“; 3.属性-》配置属性-》链接器-》附件依赖目录,填写”add.lib“所在目录; 4.在用到CAdd这个类的地方添加头文件包含#include<add.h> 5.具体调用CAdd类的函数
下一篇将介绍如何在Visual Studio下生成和使用动态链接库
|
|