Windows Visual Studio中静态库与动态库加载

VS项目中的包含目录库目录附加包含目录附加库目录附加依赖项在项目->属性->配置属性下进行配置,具体说明如下:

1 静态库加载

1.1 VC++目录

包含目录:即语句#include<xxxx.h>中的头文件xxxx.h的搜索目录
库目录:即.lib文件的搜索目录

1.2 C/C++:

常规->附加包含目录:即语句#include<xxxx.h>中的头文件xxxx.h的搜索目录(多项之间用分号;分割)

1.3 链接器:

常规->附加库目录:寻找.lib文件的搜索目录
输入->附加依赖项lib库文件名(Tips: C++的库一般会把函数、类等声明放在*.h头文件中,具体函数、类等实现放在*.cpp或*.cc中。编译之后,.cpp,.cc,*.c会被打包成一个.lib文件,这样可以保护源代码)

 

1.4 配置区别

  1. 包含目录vs附加包含目录库目录vs附加库目录的区别
    包含目录:修改了系统的include宏的值,是全局的;
    附加包含目录:用于当前项目,对其他项目没有影响。
    注意:库目录附加库目录的区别同上;

  2. 包含目录vs附加包含目录库目录vs附加库目录的区别主要在于全局还是仅针对当前工程;若仅需要对某工程进行配置,则在附加包含目录附加库目录中添加即可。
    注意:要使用一个库,除了要include其头文件以外(附加包含目录),还要在链接过程中把lib加进去,即需要配置附加库目录附加依赖项(库文件名)。

1.5 某工程具体配置方法

为了提高程序的可移植性,通常会将第三库放在解决方案(.sln)或者工程(.vcxproj)文件所在的文件夹下;添加目录的时候添加相对目录,这样在其他电脑上运行时就不会出现配置的问题了。

注意:相对路径是针对工程文件(*.vcxproj)而言的。

  1. 附加包含目录—添加工程的头文件目录:
    项目->属性->配置属性->C/C++ ->常规->附加包含目录:加上头文件的存放目录;
  2. 附加库目录—添加文件引用的lib静态库路径:
    项目->属性->配置属性->链接器->常规->附加库目录:加上lib文件的存放目录;
  3. 附加依赖项—添加工程引用的lib文件名:
    项目->属性->配置属性->链接器->输入->附加依赖项:加上lib文件名。

附加依赖项也可直接给带有路径(相对路径 或 绝对路径)的lib文件,此时无需配置附加库目录

 

 

2 动态库加载

与静态库不同,动态库的加载有2种方式,分为隐式加载显示加载

2.1 隐式加载

所需文件:接口.h头文件dll文件lib文件
.h文件.lib文件的加载方式与静态库加载完全一致。但.dll文件必须放在环境变量指定的目录下,通常是与目标.exe文件放在同一目录下。

2.2 显示加载

所需文件:.h文件dll文件。理论上不需要.h头文件,但是前提是明确知道函数接口。
利用LoadLibrary()函数进行加载、利用FreeLibrary()函数进行卸载。如图2 动态库显式加载与卸载范例

 

 

2.3 两种加载方式区别

  1. 显示加载使用灵活,需要时加载,用完卸载;
  2. 隐式加载伴随着整个程序的生命周期。

总结

库分为静态库动态库

  1. 静态库可执行文件.exe打包,动态库可执行文件.exe独立。
  2. 静态库加载需要:.lib文件.h文件;
  3. 动态库隐式加载需要.dll文件.h文件.lib文件;
  4. 动态库显示加载只需要.dll文件
posted @ 2023-01-10 13:49  羊大葱  阅读(2021)  评论(0编辑  收藏  举报