当前位置:网站首页 > 编程语言 > 正文

动态库和静态库谁快(动态库和静态库的使用)



目录

1、静态库和动态库有什么不同?

1.1、编译时的链接方式不同

2、如何制作库和如何调用库?以Window平台、C++语言、IDE VS2019为例

2.1、如何制作一个静态库?

2.2、如何调用静态库?

2.3、如何制作一个动态库?

2.4、如何调用动态库

2.4.1、隐式调用,也叫静态调用

2.4.2、显示调用 ,也叫动态调用


静态库采用静态链接,动态库采用动态链接。

使用静态库的时候,静态库和调用程序链接打包成了一个可执行文件。所以可执行文件比较大,想要升级静态库的话,就必须重新编译,全量升级。编译完成之后就不再需要静态库,也就是说运行时不需要静态库。

使用动态库的时候,动态库和调用程序不会链接打包在一起。所以可执行文件较小,想要升级动态库的话,只需要替换相应的动态库即可,不需要重新编译,不需要替换整个可执行文件,可实现增量升级。简单来说就是编译时不需要动态库,运行时需要动态库。

1、创建一个空项目

 2、编写头文件和源文件

3、以静态库的方式生成

项目右键属性

静态库制作完成

很简单,只需要包含静态库的头文件和链接库路径

链接库的编译指令是:#pragma comment ( lib,"xxx.lib" )

也可以在项目->属性中设置静态库的路径

 完成

和制作静态库不同的是

1、选择以动态库的方式生成

2、增加__declspec(dllexport),将动态库函数声明为导出函数

有两种调用动态库的方式:隐式调用和显示调用

2.4.1、隐式调用,也叫静态调用

调用的方式的静态库一样,只需要包含静态库的头文件和链接库路径

注意:动态库的.lib文件和静态库的.lib 文件完全不是一回事,动态库.lib文件主要是帮助调用程序找到动态库的函数地址,而函数实现都在.dll文件里,静态库的函数实现在.lib文件里。

2.4.2、显示调用 ,也叫动态调用

这里需要用到加载、获取动态库函数地址、卸载的函数,包含在Windows.h里

 一运行我们发现,获取动态库函数地址失败

原因是函数的名字在动态库里面并不叫"Add",我们用depends工具看一下

函数的名字叫:?Add@@YAHHH@Z,这是因为C++语言函数可以发生重载的缘故,编译器编译的时候在函数名前面和后面增加了一些信息来区别重载。

解决方法有两个。1、动态库使用C语言的编译器 。2、在动态库函数声明前面加一个 extern "C",指示编译器以C语言的方式导出。

到此这篇动态库和静态库谁快(动态库和静态库的使用)的文章就介绍到这了,更多相关内容请继续浏览下面的相关推荐文章,希望大家都能在编程的领域有一番成就!

版权声明


相关文章:

  • max31865三线(ma5ma20ma30三线详解)2026-05-22 23:54:09
  • 颜色代码怎么弄(颜色代码怎么弄出来)2026-05-22 23:54:09
  • 复制代码小游戏(复制代码小游戏有哪些)2026-05-22 23:54:09
  • nfpp是什么材料(pfna是什么材料做的)2026-05-22 23:54:09
  • mha是什么意思的缩写民航(民航mdh是什么意思)2026-05-22 23:54:09
  • 阻塞队列实现原理(阻塞队列的原理)2026-05-22 23:54:09
  • vb什么是方法(vb 方法)2026-05-22 23:54:09
  • vs怎么调试dll(vs怎么调试代码)2026-05-22 23:54:09
  • 瓦罗兰特代码84(瓦罗兰特代码准星)2026-05-22 23:54:09
  • 流量回放优缺点(流量录制与回放)2026-05-22 23:54:09
  • 全屏图片