使用Visual Studio链接LIB库文件注意事项
在使用Visual Studio在Windows下开发应用程序时,可能面临需要引用第三方库来支撑自身代码的情况。第三方库通常以下面两种方式提供: 1、静态LIB库:这种提供形式通常包含LIB库文件、头文件及相关文档说明。 2、动态DLL库:这种提供形式通常也包含LIB库文件 (有些厂商不提供LIB库文件) ,头文件,DLL文件以及相关文档说明。 无论以上那种形式的库,在使用时都会面临链接这个步骤(LoadLibrary->GetProcAddress方式载入DLL库不在本文讨论范围内, 下同),而链接步骤又由于将要生成的目标工程的不同类型变得越发复杂。为什么这么说呢,我们继续往下看。 通常在链接一个第三方库的LIB文件时,我们使用下面两种方法: 1、#pragma comment(lib, "XXX.LIB") 杂注方式。 2、项目->属性->链接器->输入->附加依赖项方式。 乍一看这两种方式我们都用过,而且在使用时并没有感觉到两种方式有何不同。但实际上仔细分析还是有些地方值得商榷的。两种不同的链接方法在生成不同类型的目标工程时表现出的行为区分明显。为了展示方便,我们做了如下几个实验: 目标工程类型 使用#pragma杂注链接 使用附加依赖项链接 可执行文件(EXE) √ √ 动态链接库(DLL) √ √ 静态库(LIB) √ √ 可执行文件(EXE),并链接上一步骤生成的静态库