vs中静态库与动态库的调用

解决问题:vs中如何调用库。

1.什么是库

库是写好的现有的,成熟的,可以复用的代码。现实中每个程序都要依赖很多基础的底层库

本质上来说库是一种可执行代码的二进制形式,可以被操作系统载入内存执行。

库有两种:静态库(.a、.lib)和动态库(.so、.dll)。

.lib文件称作静态链接库,.dll文件称作动态链接库。linux系统下对应的文件为.a文件及.so文件。

将一个程序编译成可执行程序的步骤:

2.动态库与静态库

静态库:在编译的时候加载生成目标文件,在运行时不用加载库,在运行时对库没有依赖性。 

扫描二维码关注公众号,回复: 3558464 查看本文章

动态库:在目标文件运行时加载,手动加载,且对库有依赖性。 

两者区别: 
1)静态库的使用需要: 
包含一个对应的头文件告知编译器lib文件里面的具体内容;
设置lib文件允许编译器去查找已经编译好的二进制代码 。

2)动态库的使用: 
程序运行时需要加载动态库,对动态库有依赖性,需要手动加入动态库 。

3)依赖性: 
静态链接表示静态性,在编译链接之后, lib库中需要的资源已经在可执行程序中了, 也就是静态存在,没有依赖性了 ;
动态,就是实时性,在运行的时候载入需要的资源,那么必须在运行的时候提供需要的动态库,有依赖性, 运行时候没有找到库就不能运行了 。

4)区别: 
简单讲,静态库就是直接将需要的代码连接进可执行程序;动态库就是在需要调用其中的函数时,根据函数映射表找到该函数然后调入堆栈执行。 
做成静态库可执行文件本身比较大,但不必附带动态库;
做成动态库可执行文件本身比较小,但需要附带动态库。

3.如何在vs工程中调用编译好的库

注意:给其他人链接库的时候,除了.lib文件还要给出头文件,否则别人将不知道如何调用。

当需要使用别人的库时,需添加.h,.lib,.dll文件到工程中。可以有两种方法:a)将.h,.lib,.dll都放在工程目录下(),需要在使用dll的main函数中加载上头文件,再链接lib(“链接器”->“输入”->-“附加依赖项”),就可直接使用;b)单独建立include,bin,lib文件夹,然后将它们链接上;这样如果要添加的库比较多时,会更加整齐可读,推荐采用这种方法。下面介绍这种方法的实现步骤:

1)建立include文件夹,里面存放.h文件,然后右击工程项目,“属性”->“C/C++”->“常规”->“附加包含目录”,添加.h路径即可(为了防止工程迁移,建议添加相对路径)。

2)建立lib文件夹,里面存放.lib文件,然后右击工程项目,“属性”->“链接器”->“常规”->“附加库目录”,添加.lib路径即可(为了防止工程迁移,建议添加相对路径)。

右击工程项目,“属性”->“链接器”->“输入”->“附加依赖项”,添加对应的.lib文件名称。

3)建立bin文件夹,里面存放.dll文件,然后右击工程项目,“属性”->“配置属性”->“调试”->“工作目录”,添加.dll路径即可(为了防止工程迁移,建议添加相对路径)。

注意事项:

需要关注调用的.dll文件的生成环境,debug,release,x64,win32,注意配置时在相应的环境下配置。

猜你喜欢

转载自blog.csdn.net/u013925378/article/details/82858370
今日推荐