VS下生成与配置静态库与动态库(一)

简介: 此处仅以VS2010为例,详细说明一下如何在VS环境下生成和使用C++的静态库与动态库。Qt下生成和使用静态和动态库后续再讲。       首先简单地理解一下静态库与动态库,以及两者的区别。静态库(.lib): 将.cpp文件中的函数的地址和定义,以及函数之间的链接关系通通打包,生成的一个二进制文件;动态库(.lib+.dll): 动态库的.lib文件,打包的只是.cpp文件中函数的地址和链接,函数的具体定义打包在*.dll文件中。

此处仅以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”:

#ifndef ADD_H
#define ADD_H
 
class CAdd
{
public:
    CAdd();
    ~CAdd();
    int add(int a, int b);
};
 
#endif

"add.cpp":
#include "add.h"
CAdd::CAdd()
{
 
}
 
CAdd::~CAdd()
{
 
}
 
int CAdd::add(int a, int b)
{
    return a+b;
}

可以在“属性”->"C++"->"预编译头"下选择“不使用预编译头”去掉cpp文件的“stdafix.h”的添加要求

  1. 选择编译为静态库:

在“属性”->“配置属性"->”常规“->”配置类型“下选择”静态库(.lib)“(默认是"应用程序(.exe)"),在此界面上可以更改输出文件(.lib)所在的目录,

以及lib文件的名称(默认是工程的名称):

image

4.选择生成解决方案,这时在你刚刚选择的输出文件夹下(这里是lib文件夹),已经生成了静态库文件,add.lib

image

使用:

       使用很简单:

1.属性-》配置属性-》C/C++->常规-》附加包含目录,填写”add.h“所在目录;

  2.属性-》配置属性-》链接器-》附加依赖项,填写”add.lib“;

3.属性-》配置属性-》链接器-》附件依赖目录,填写”add.lib“所在目录;

4.在用到CAdd这个类的地方添加头文件包含#include

5.具体调用CAdd类的函数

目录
相关文章
|
2月前
|
Linux Windows
静态库和动态库
本文详细介绍了静态库和动态库的概念及使用方法。在 Linux 系统中,静态库以 `libxxx.a` 形式存在,而动态库则为 `libxxx.so`。文章分别讲解了如何创建和使用这两种库,并提供了具体的命令示例。此外,还介绍了将库文件添加到系统目录的方法,包括直接复制到默认库路径、修改环境变量以及编辑系统配置文件等方案。适合初学者了解库文件的基本操作。
|
6月前
|
Linux 编译器 开发者
C/C++动态库与静态库 的详细解析
C/C++动态库与静态库 的详细解析
635 0
|
6月前
|
消息中间件 NoSQL Linux
静态库与动态库
静态库与动态库
静态库与动态库
vs2019使用静态库
vs2019使用静态库
299 0
|
存储 Cloud Native Linux
C++ 动态库与静态库的区别?
C++ 动态库与静态库的区别?
|
存储 Linux 编译器
什么是链接库 | 动态库与静态库
什么是链接库 | 动态库与静态库
157 0
|
Shell 开发工具 iOS开发
动态库下(5)
动态库下(5)
373 0
动态库下(5)
|
Shell 开发工具 C语言
动态库与静态库
本文目标:⭐认识动态静态库,学会结合gcc选项,制作动静态库⭐⭐了解动态库加载过程⭐。
动态库与静态库
|
vr&ar C语言 索引
静态链接和静态库
静态链接和静态库
173 0
vs2019使用动态库
vs2019使用动态库
210 0