C++各种文件的作用
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++各种文件的作用相关推荐
- C++ 笔记(25)— 理解 C++ 中的头文件和源文件的作用
1. C++ 编译模式 通常,在一个 C++ 程序中,只包含两类文件: .cpp 文件,被称作 C++ 源文件,里面放的都是 C++ 的源代码 .h 文件,被称作 C++ 头文件,里面放的也是 C++ ...
- Linux中常用头文件的作用--转
http://blog.sina.com.cn/s/blog_5c93b2ab0100q62k.html 1. Linux中一些头文件的作用: <assert.h>:ANSI C.提供断言 ...
- Linux中常用C/C++一些头文件的作用
2019独角兽企业重金招聘Python工程师标准>>> 1. Linux中一些头文件的作用: <assert.h>:ANSI C.提供断言,assert(表达式) < ...
- 审计文件的作用以及记录的内容,审计日志的记录,以及审计日志包括的内容
对DBA(数据库管理员)而言,审计就是记录数据库中正在作什么的过程. 审计文件的作用 审计功能把用户对数据库的所有操作自动记录下来,放入审计日志中,审计员可以利用审计日志监控数据库中的各种行为,重现导 ...
- /etc/ld.so.conf.d/目录下文件的作用
/etc/ld.so.conf.d/目录下文件的作用 2013-04-30 10:58 5835人阅读 评论(0) 收藏 举报 分类: Linux/Unix系统管理(51) 版权声明:本文为博主原创文 ...
- linux kill pid文件,从一次事故谈谈 pid 文件的作用
title: 从一次事故谈谈 pid 文件的作用 tags: pid categories: Tech comments: true date: 2017-05-26 20:00:00 很多程序在启动 ...
- qmoc文件_Qt中Q_OBJECT与生成的moc文件的作用
Qt中Q_OBJECT与生成的moc文件的作用 一.先来了解Q_OBJECT 只有继承了QObject类的类,才具有信号槽的能力.所以,为了使用信号槽,必须继承QObject.凡是QObject类(不 ...
- java项目中.classpath,.settings,.project,mymetadata文件的作用
今天犯了一个错误,误修改了本地的.classpath文件,导致项目好多地方报错,之前也没有仔细的研究过项目中的一些生成文件的作用. 今天特此进行记录. 不管我们在eclipse中新建任何的Java项目 ...
- linux u盘 uid pid,linux下的pid文件的作用
在Linux系统的目录/var/run下面一般我们都会看到很多的*.pid文件.而且往往新安装的程序在运行后也会在/var/run目录下面产生自己的pid文件.那么这些pid文件有什么作用呢?它的内容 ...
- android主要文件的作用是什么,androidmanifest.xml文件的作用是什么
androidmanifest.xml文件的作用:1.是每个android程序中必须的文件,它位于整个项目的根目录:2.配置程序运行所必要的组件,权限,以及一些相关信息:3.是整个应用的入口,所以有助 ...
最新文章
- phpsso.php 注入漏洞,PHPCMS各种注入漏洞补丁
- public lt;Tgt; void method,此地泛型的意思
- HDOJ 1016 HDU 1016 Prime Ring Problem ACM 1016 IN HDU
- 每日一题(47)—— 置1与清0
- RHEL6 安装ipvsadm-1.26
- nginx 没有cookie_nginx实现负载均衡的原理及策略
- STM32国产替代,再来一波
- MSA移动安全联盟 获取OAID 异常问题
- 互联网晚报 | 10月22日 星期五 | 火花思维澄清破产传闻;珠海万达商管赴港提交招股书;特斯拉Q3营收净利均创新高...
- 【POJ 3580】 SuperMemo
- Pytorch中BatchNorm中running_mean和running_var的计算方法
- 网络编程 3 tcp通信
- 日本房地产泡沫破裂后的平民生活
- PHP编程54条必知
- html form表单提交
- 【server2019】refs数据恢复/打捞
- 基于微信运动场地预约小程序 毕业设计毕业论文 开题报告和效果图(基于微信小程序毕业设计题目选题课题)
- 如何top命令查看进程信息和cpu占用率分析
- 批量验证ssh账号密码登录shell脚本
- 深度学习入门-基于Python的理论入门与实现源代码加mnist数据集下载推荐