文章目录

  • 0x00 前言
  • 0x01 lib 简介
  • 0x02 静态 lib
  • 0x03 动态 lib
  • 0x04 lib 的调用
    • 一、静态 lib
    • 二、动态 lib

0x00 前言

​ 本文主要是参考:在自己的项目中调用别人的库的方法(static lib库,dynamic lib库以及dll动态库)_邓无邪的博客-CSDN博客 写下来的

0x01 lib 简介

​ lib 文件也是一种类似于 DLL 的库文件,常称之为静态链接库文件,而 lib 又有两种:静态 lib 和动态 lib。

0x02 静态 lib

​ 静态 lib (static Library)是任意个 obj 文件的打包,它包含了所有导出声明和实现,lib 文件被链接到程序后就会将整个 lib 文件嵌进程序代码中,此后 exe 的运行不再需要 lib 了。

​ 虽然这大大增加了程序的体积。所以对于一个程序而言,如果只需要完程编译,有静态 lib 文件即可(理论上)。

0x03 动态 lib

​ 动态 lib ,也称导入库(Import Libary),与 DLL 的存在相关。对于我们想链接 DLL 文件有两种方式:

  • 直接使用 LoadLibary ,前提是知道函数地址位置
  • 使用导入库 lib 文件

​ 动态 lib 文件其实与静态 lib 文件并不相同,静态 lib 包含了实际代码等等,而动态 lib 中只含有地址符号表来帮助程序找到响应函数。

所以动态 lib 就是对于 DLL 的一个使用方式补充,方便了人们的使用 DLL ,方便了软件的更新(只需要更新 DLL 和相应的动态 lib 即可,不用更新软件代码)。

0x04 lib 的调用

一、静态 lib

​ 静态 lib 库的调用需要用到以下文件:

  • .h文件

    • 包含函数的声明,数据结构等东西,在调用lib的时候,需要把该头文件包含进你的代码
  • .lib文件
    • 包含具体的实现

​ 在源代码中需要使用以下代码导入静态 lib 文件

#include "..\lib.h"
#pragma comment(lib,"文件地址如:./test.lib") //指定与静态库一起链接
//也可以在VS中的附加处添加,而不使用第二段代码,文章中有讲添加方法

更加详细的静态 lib 编写和调用讲解可以看以下博客:VS2010/2013下生成并使用静态库_邓无邪的博客-CSDN博客_vs 生成静态库

二、动态 lib

​ 在我们调用 DLL 库是就会涉及到我们的动态 lib 文件了,涉及到以下文件:

  • .h文件

    • 如上,同样需要包含到你的代码
  • .lib文件
    • 包含一些函数的入口和具体位置,必须在编译阶段引入这个文件,否则会报错。(如果没有这个动态lib文件或者不想用lib文件,需要用Win32的API函数LoadLibrary和GetProcAddress来装载)
  • .dll文件
    • 实际的实现,在程序运行时动态调用

介绍的直接一些的相关的 DLL 编写和调用可以看:VS下静态库与动态库的生成与使用_Neverland_LY‘s Domain-CSDN博客 的动态库部分

lib 文件(基础)相关推荐

  1. 由.def文件生成lib文件[转]

    最近在学习curl库时,碰到一个问题,从官网上下载了一个lib版的,却发现只有.dll,没有lib文件,感觉很奇怪,google了之后才知道,原来库作者的用意是让用户自己生成lib文件,下载到的lib ...

  2. r软件说明lib文件未指明_软件说明文件

    r软件说明lib文件未指明 The software primarily consists of Computer Programs and the associated documentation. ...

  3. VS生成DLL没有生成LIB文件的解决方法

    1.在所建工程上单击鼠标右键,在弹出的右键菜单中选择"添加-->新建项....---->模块定义文件",在该模块定义文件中写导出函数表,单击确定.然后在所建工程上单击鼠 ...

  4. OpenCV 2.4.9-2.4.13各个版本附加依赖项Lib文件汇总

    使用OpenCV前,需对项目属性进行设置,主要包括:包含目录.库目录,附加依赖项等.包含目录和库目录设置如下图所示 包含目录添加3个:(1)OpenCV安装文件夹\opencv\build\inclu ...

  5. VS中添加lib文件,编译出错:LINK : fatal error LNK1104: 无法打开文件:×××.lib解决办法

    添加库文件: 在VS中右击项目点属性: 添加头文件目录:   配置属性-->C/C++-->常规-->附加包含目录 加上头文件存放的目录.   添加lib文件:   配置属性--&g ...

  6. 快速获取OpenCV库(Lib)文件下的所有文件的目录名~

    图像处理开发需求.图像处理接私活挣零花钱,请加微信/QQ 2487872782 图像处理开发资料.图像处理技术交流请加QQ群,群号 271891601 OpenCV的VS配置中很重要的一步是配置链接器 ...

  7. GDI对象存储和查看lib文件导出函数

    GDI对象存储     C++对象通常存储在栈.堆或者由应用程序通过定制的新操作符分配的任何地址空间里.基本上,它总是存放在用户模式的地址空间里,除非我们正在讨论内核模式设备驱动程序.     Win ...

  8. 如何生成动态库 .dll 的符号 .lib 文件?

    在知道拥有动态库和头文件的情况下,但没有动态库符号文件的情况下,如何静态链接动态库? 1.使用 Microsoft Visual Studio Tools 命令行命令生成 xxx.def 文件,进而使 ...

  9. VS怎样创建和使用lib文件

    假设你当前正在使用vs写了一个project,那么你想如今就生成一个Lib文件,那么能够直接在"项目属性"上进行改动i 项目属性->配置属性->常规->配置类型中 ...

最新文章

  1. 移动端各种小技巧及优化体验(网上看到记录一下省的总结了)
  2. 智能指针——weak_ptr
  3. 消息中间件的背景分析
  4. Fragment的生命周期和activity如何的一个关系
  5. Java项目几个月能完成_c#项目转JAVA,第5个月,基本完成
  6. 无表头单链表的总结----输出链表
  7. ppt生成器_小米发布会ppt词云怎么做的
  8. 腾讯专家谈全球数据保护案例
  9. PostreSQL崩溃试验全记录
  10. java 文件下载 并发_高并发下载tomcat下的文件时,发生java.net.SocketException: Connection reset解决方案...
  11. 哎呀!可能有弹出式窗口拦截器生成Gmail无法打开该网页。如果您使用弹出式窗口拦截器,请将其关闭以便打开窗口。...
  12. 【CSS标签的嵌套规则】
  13. 2021最新一线互联网大厂常见高并发面试题解析,快手Java面试算法题
  14. 中国法定节假日调整内容公布 总天数增加1天
  15. 电脑端微信无法打开腾讯文档
  16. Golang学习日志 ━━ 调用系统默认浏览器打开指定链接(全平台)
  17. 如何搭建IPv6测试你的APP
  18. MobileNetV2: Inverted Residuals and Linear Bottlenecks--M Sandler
  19. 初识 Mac机子 关机命令
  20. Pycharm2018.2永久破解

热门文章

  1. 从TOP25榜单,看半导体之变
  2. 如何用Python求众数
  3. 微软模拟飞行2020服务器多少内存,微软模拟飞行配置要求高吗 微软模拟飞行2020配置要求介绍_游侠网...
  4. 基于Opencv的图片人脸检测
  5. 深度学习中的遥感影像数据集
  6. C#利用SaveFileDialog实现保存的功能示例
  7. 计算机毕业设计ssm论文管理系统
  8. c语言之文件存储通版讯录
  9. pta 7-36 韩信点兵
  10. 体验世界上五十大开心事