1. h、lib、dll总体说明

.h头文件是编译时必须的,lib是链接时需要的,dll是运行时需要的。

附加依赖项的是.lib不是.dll。
若生成了dll,则肯定也生成 lib文件。

如果要完成源代码的编译和链接,有头文件和lib就够了。如果要使动态连接的程序运行起来,有dll就够了(放在Debug文件夹里)。在开发和调试阶段,当然最好都有。

.h .lib .dll三者的关系是:
.h文件:声明函数接口

.dll文件:函数可执行代码

.lib文件:帮助链接器找到.h文件中函数对应的函数执行代码

解释说明:当我们在自己的程序中引用了一个H文件里的函数,链接器怎么知道该调用哪个DLL文件呢?这就是LIB文件的作用: 告诉链接器调用的函数在哪个DLL中,函数执行代码在DLL中的什么位置,这也就是为什么需要附加依赖项 .LIB文件,它起到桥梁的作用。
如果生成静态库文件,则没有DLL ,只有lib,这时函数可执行代码部分也在lib文件中

2. lib文件和dll文件生成

参考:
https://www.cnblogs.com/wjcoding/p/11232570.html

3. exp文件

exp文件就是导出文件(export file)。使用linker去创建dll(中间还有它的导出库),我们假设我们生成两个dll(or just executables)。但是他们都需要调用一些对方中函数,问题出现了。当我们生成a.dll的时候我们需要b.lib;但是b.lib在对应的b.dll生成之前没有生成,而b.dll的生成又需要a.lib。正因如此,微软的解决办法是使用exp文件,或者叫导出文件。在生成两个dll之前,你使用lib.exe(library mangager tool库管理工具)来创建一个.lib和.exp,即,DLL A 的a.lib 和a.exp,现在linker使用a.lib和DLL B 自己的东西去生成b.dll和b.lib。当你回来链接DLL A的时候你就有了b.lib。这里linker需要知道a.dll中需要导出处啥。这些信息都被缓存到了a.exp文件中。linker不需要def文件或者/EXPORT选项,它仅仅是加载a.exp中的信息。a.exp就像a.dll的两个生成过程(lib.exe and linker)的联系者一样。相似的,linker不会再次生成a.lib。总的来说,这种循环调用的情况不会和在我们的程序中出现,因此,希望你不会再你的程序中用到exp文件。
总结:exp文件是两个之间的联系者

C++各种文件的作用相关推荐

  1. C++ 笔记(25)— 理解 C++ 中的头文件和源文件的作用

    1. C++ 编译模式 通常,在一个 C++ 程序中,只包含两类文件: .cpp 文件,被称作 C++ 源文件,里面放的都是 C++ 的源代码 .h 文件,被称作 C++ 头文件,里面放的也是 C++ ...

  2. Linux中常用头文件的作用--转

    http://blog.sina.com.cn/s/blog_5c93b2ab0100q62k.html 1. Linux中一些头文件的作用: <assert.h>:ANSI C.提供断言 ...

  3. Linux中常用C/C++一些头文件的作用

    2019独角兽企业重金招聘Python工程师标准>>> 1. Linux中一些头文件的作用: <assert.h>:ANSI C.提供断言,assert(表达式) < ...

  4. 审计文件的作用以及记录的内容,审计日志的记录,以及审计日志包括的内容

    对DBA(数据库管理员)而言,审计就是记录数据库中正在作什么的过程. 审计文件的作用 审计功能把用户对数据库的所有操作自动记录下来,放入审计日志中,审计员可以利用审计日志监控数据库中的各种行为,重现导 ...

  5. /etc/ld.so.conf.d/目录下文件的作用

    /etc/ld.so.conf.d/目录下文件的作用 2013-04-30 10:58 5835人阅读 评论(0) 收藏 举报 分类: Linux/Unix系统管理(51) 版权声明:本文为博主原创文 ...

  6. linux kill pid文件,从一次事故谈谈 pid 文件的作用

    title: 从一次事故谈谈 pid 文件的作用 tags: pid categories: Tech comments: true date: 2017-05-26 20:00:00 很多程序在启动 ...

  7. qmoc文件_Qt中Q_OBJECT与生成的moc文件的作用

    Qt中Q_OBJECT与生成的moc文件的作用 一.先来了解Q_OBJECT 只有继承了QObject类的类,才具有信号槽的能力.所以,为了使用信号槽,必须继承QObject.凡是QObject类(不 ...

  8. java项目中.classpath,.settings,.project,mymetadata文件的作用

    今天犯了一个错误,误修改了本地的.classpath文件,导致项目好多地方报错,之前也没有仔细的研究过项目中的一些生成文件的作用. 今天特此进行记录. 不管我们在eclipse中新建任何的Java项目 ...

  9. linux u盘 uid pid,linux下的pid文件的作用

    在Linux系统的目录/var/run下面一般我们都会看到很多的*.pid文件.而且往往新安装的程序在运行后也会在/var/run目录下面产生自己的pid文件.那么这些pid文件有什么作用呢?它的内容 ...

  10. android主要文件的作用是什么,androidmanifest.xml文件的作用是什么

    androidmanifest.xml文件的作用:1.是每个android程序中必须的文件,它位于整个项目的根目录:2.配置程序运行所必要的组件,权限,以及一些相关信息:3.是整个应用的入口,所以有助 ...

最新文章

  1. phpsso.php 注入漏洞,PHPCMS各种注入漏洞补丁
  2. public lt;Tgt; void method,此地泛型的意思
  3. HDOJ 1016 HDU 1016 Prime Ring Problem ACM 1016 IN HDU
  4. 每日一题(47)—— 置1与清0
  5. RHEL6 安装ipvsadm-1.26
  6. nginx 没有cookie_nginx实现负载均衡的原理及策略
  7. STM32国产替代,再来一波
  8. MSA移动安全联盟 获取OAID 异常问题
  9. 互联网晚报 | 10月22日 星期五 | 火花思维澄清破产传闻;珠海万达商管赴港提交招股书;特斯拉Q3营收净利均创新高...
  10. 【POJ 3580】 SuperMemo
  11. Pytorch中BatchNorm中running_mean和running_var的计算方法
  12. 网络编程 3 tcp通信
  13. 日本房地产泡沫破裂后的平民生活
  14. PHP编程54条必知
  15. html form表单提交
  16. 【server2019】refs数据恢复/打捞
  17. 基于微信运动场地预约小程序 毕业设计毕业论文 开题报告和效果图(基于微信小程序毕业设计题目选题课题)
  18. 如何top命令查看进程信息和cpu占用率分析
  19. 批量验证ssh账号密码登录shell脚本
  20. 深度学习入门-基于Python的理论入门与实现源代码加mnist数据集下载推荐

热门文章

  1. 博达路由器常见功能教学0
  2. 演练一下500台主机的内网中IP地址的划分
  3. iOS几款实用的工具类demo
  4. mysql安装教程8.0
  5. PHP数组常用方法(优化版)
  6. mysql数据库二级检索_MySQL数据库(2)检索信息
  7. WP中Document的层次设计
  8. LINUX编译Android ffmpeg
  9. LINUX下载编译lame
  10. apt搜索某个软件及版本