首先我们需要明白什么是静态链接库(lib)和动态链接库(DLL)。
1、静态库(.lib)
函数和数据被编译进一个二进制文件(通常扩展名为.LIB)。在使用静态库的情况下,在编译链接可执行文件时,链接器从库中复制这些函数和数据并把它们和应用程序的其他模块组合起来创建最终的可执行文件(.EXE文件)。当发布产品时,只需要发布这个可执行文件,并不需要发布被使用的静态库。
2、动态库(.lib文件和.dll文件)
在使用动态库的时候,往往提供两个文件:一个引入库(.lib)文件(也称“导入库文件”)和一个DLL(.dll)文件。虽然引入库的后缀名也是“lib”,但是,动态库的引入库文件和静态库文件有着本质的区别,对一个DLL文件来说,其引入库文件(.lib)包含该DLL导出的函数和变量的符号名,而.dll文件包含该DLL实际的函数和数据。在使用动态库的情况下,在编译链接可执行文件时,只需要链接该DLL的引入库文件,该DLL中的函数代码和数据并不可复制到可执行文件,直到可执行程序运行时,才去加载所需的DLL,将该DLL映射到进程的地址空间中,然后访问DLL中导出的函数。这时,在发布产品时,除了发布可执行文件以外,同时还需要发布该程序将要调用的动态链接库。
那么在Visual Studio中我们经常会用到导入外部的DLL或者lib的操作,那么如何操作呢?
Visual Studio 项目中添加include, lib, dll库文件(*.h,*.lib,*.dll)
应用程序使用外部库时需要进行加载,两种库的加载本质上都是一样:提供功能和功能的定义。vs2005 c++ 项目设置外部库方法如下:
1. 添加编译所需要(依赖)的 lib 文件
在“项目->属性->配置属性->连接器->输入->附加依赖项”里填写“winsock.lib”,多个 lib 以空格隔开。等同于“#pragma comment(lib, "*.lib") ”语句。
2. 添加库(libs)文件目录
方法 1:项目->属性->配置属性->连接器->常规->附加库目录”
方法 2:[菜单]“工具->选项->项目和解决方案->c++ 目录”,选择对应平台,然后添加所需“库文件”目录
这个设置类似于设置环境变量,主要是为程序设置搜索的库目录,真正进行库加载还需要进行第一种设置!
3. 添加包含(include)文件目录
方法 1:“项目->属性->配置属性->c/c++->常规->附加包含目录”
方法 2:[菜单]“工具->选项->项目和解决方案->c++ 目录”,添加所需“包括文件”目录
方法2类似于设置环境变量。
4. 导入库(import)
在“项目->属性->配置属性->连接器->高级->导入库”填写需要生成的导入库。
更多可以参考下面一份PDF:
文章的脚注信息由WordPress的wp-posturl插件自动生成