C/C++ 动态库(dll)与静态库(lib)

前言

在编写程序时,或者细心的话,都会发现见过一些后缀名为lib和dll的文件,这些文件其实就是所谓的静态库和动态库。

静态库

静态库在windows平台的后缀名如标题所示为**.lib**,在linux平台则为**.a**。
静态库是在静态编译时由编译器到指定目录寻找并且进行链接的软件库,一旦链接完成,最终的可执行程序中就包含了该库文件中的所有有用信息,包括代码段、数据段等。

动态库

动态库在windows平台的后缀名为标题所示为**.dll**,在linux平台则为**.so**。
动态库是在应用程序运行时,由操作系统根据应用程序的请求,动态到指定目录下寻找并装载入内存中,同时需要进行地址重定向。

二者比较

动态库与静态库在功能上并无太大的区分,同样都可以实现源码或者数据的保护目的。

但是静态库因为是直接链接进程序之中的,所以一旦改变,就涉及到程序的重编译,如果静态库的功能模块变更频繁,就需要重复的去编译程序,而如果是提供给客户,或者开发提供给测试的代码,显然并不具备重编译的能力。

恰恰这个时候就是动态库用的比较多,因为无论静态库还是动态库,使用时都是开放相关的接口出来,由程序去直接调用,因为动态库并非直接链接进程序中,而是在程序运行时动态的去指定目录下寻找并载入内存中,所以即使动态库有需要改变,只要接口是不变的,在使用时只要更换不同版本的库就可以解决这个问题。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
动态库静态库的编写方式基本相同,只是在编译链接时需要采用不同的方式。以下是C++动态库静态库的编写方法: ### 静态库 1. 创建静态库项目:打开Visual Studio,选择“新建项目”,然后选择“Win32控制台应用程序”,输入项目名称和路径,点击“确定”按钮。在弹出的窗口中选择“静态库”类型,然后点击“下一步”按钮,最后点击“完成”按钮。 2. 编写文件代码:在项目中添加源文件,编写文件的代码,并在头文件中声明需要导出的函数和类。 3. 生成静态库文件:在编译链接时将代码编译静态库文件,可以手动编译或在Visual Studio中配置。在Visual Studio中,可以选择“生成”菜单中的“生成解决方案”或“生成项目”命令生成静态库文件。生成的静态库文件通常以.lib为扩展名。 4. 使用静态库:在使用静态库的应用程序中,需要在编译链接时将静态库文件链接到可执行文件中。可以在应用程序的项目属性中配置链接选项,将静态库文件添加到链接器的附加依赖项中。在代码中包含头文件即可使用静态库中的函数和类。 ### 动态库 1. 创建动态库项目:打开Visual Studio,选择“新建项目”,然后选择“Win32控制台应用程序”,输入项目名称和路径,点击“确定”按钮。在弹出的窗口中选择“动态链接(DLL)”类型,然后点击“下一步”按钮,最后点击“完成”按钮。 2. 编写文件代码:在项目中添加源文件,编写文件的代码,并在头文件中声明需要导出的函数和类。需要使用__declspec(dllexport)关键字将需要导出的函数或类标记为可导出。 3. 生成动态库文件:在编译链接时将代码编译动态库文件,可以手动编译或在Visual Studio中配置。在Visual Studio中,可以选择“生成”菜单中的“生成解决方案”或“生成项目”命令生成动态库文件。生成的动态库文件通常以.dll为扩展名。 4. 使用动态库:在使用动态库的应用程序中,需要在运行时加载动态库文件,并使用GetProcAddress函数获取动态库中需要使用的函数或类。在代码中包含头文件即可使用动态库中的函数和类。在编译链接时需要指定动态库文件的路径和名称。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值