1. 静态库与动态库基础概念
在Windows平台使用VS2019开发C/C++项目时,库文件是代码复用和模块化开发的核心载体。静态库(.lib)和动态库(.dll)是两种最常用的二进制分发形式,它们的本质区别在于链接时机和内存占用方式。
静态库在编译链接阶段会被完整嵌入到最终的可执行文件中,这意味着:
- 优点:运行时无需依赖外部文件,部署简单
- 缺点:多个程序使用相同库时会造成内存冗余
- 文件特征:生成
.lib文件,同时会伴随.pdb调试符号文件
动态库则在程序运行时才被加载:
- 优点:多个程序可共享同一内存中的库代码,节省资源
- 缺点:需要确保运行时环境能找到对应的
.dll文件 - 文件特征:生成
.dll和配套的导入库.lib(注意这个lib与静态库不同)
提示:在VS2019中,动态库项目实际会产生两个关键输出文件 -
.dll包含实际代码,而配套的.lib只是符号导入库,体积通常很小。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. VS2019创建静态库项目
2.1 新建静态库项目
- 启动VS2019,选择"创建新项目"
- 搜索模板选择"Static Library (Windows Desktop)"
- 配置项目名称(如
MyStaticLib)和解决方案位置 - 在"附加选项"中勾选"空项目"以避免自动生成示例代码
关键配置点解析:
- 平台工具集建议选择"Visual Studio 2019 (v142)"
- Windows SDK版本选择与目标系统匹配的版本(如10.0)
- 字符集建议统一使用"Unicode"以避免中文路径问题
2.2 添加核心功能代码
在"源文件"右键添加新建项mylib.cpp:
cpp复制#include "pch.h" // 预编译头文件
#include "mylib.h"
int add(int a, int b) {
return a + b;
}
对应头文件mylib.h:
cpp复制#pragma once
#ifdef MYLIB_EXPORTS
#define MYLIB_API __declspec(dllexport)
#else
#define MYLIB_API __declspec(dllimpor
