《程序员的自我修养》读书笔记6

原创 2015年07月08日 19:48:44

Windows下的动态链接

     DLL文件的扩展名不一定是.dll,也可能是别的,比如.ocx(OCX控件)或者是.CPL(控制面板程序)。

      DLL的设计目的与共享对象有些出入,DLL更加强调模块化,即微软希望通过DLL机制加强软件的模块化设计,使得各种模块之间能够松散地组合、重用和升级。


一、声明导出函数的方法

         使用_declspec( dllexport)扩展,或者使用模块定义(.def)文件声明;

         使用.def文件来描述DLL文件的导出属性的好处:首先,可以控制导出符号的符号名,其次是可以控制一些链接的过程。


二、EXP文件的作用

        创建DLL时,会产生一个EXP文件,这个文件实际上是链接器在创建DLL时的临时文件。链接器在创建DLL时采用两遍扫描过程,DLL一般都有导出符号,链接器在第一遍时会遍历所有的目标文件并且收集所有导出符号的信息并且创建DLL的导出表,为了方便起见,链接器把这个导出表存放在一个临时的目标文件中叫做“.edata”的段中,这个目标文件就是EXP文件,EXP文件实际上是一个标准的PE/COFF目标文件,只不过它的扩展名不是.obj而是.exp。


三、DLL怎样做到在多个模块之间共享

       Linux下的ELF文件,通过GOT机制实现共享对象的地址无关性,但是Windows下的PE DLL的代码段并不是地址无关的,它通过重定基地址的方法实现DLL共享;

       "__declspec(dllimport)"的作用:一旦一个函数被声明为“__declspec(dllimport)”,那么编译器就知道它是外部导入的,以便于产生相应的指令形式。


版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

程序员的自我修养 读书笔记 chp5,chp6

5.1 windows的二进制文件格式PE/COFF windows 平台, 引入一种称为PE的可执行格式,他有着跟ELF一样良好的平台扩展性,和ELF一样都是从COFF发展而来的 6.1 进程虚拟地...

程序员的自我修养读书笔记:第一章

计算机最关键的三个部件: -中央处理器CPU -内存 -I/O控制器 南桥北桥:由于计算机技术的发展,慢速的I/O总线无法满足需求,设计了高速的北桥芯片,方便高速交换数据。北桥运行速度非常高,所有相...

程序员的自我修养读书笔记——编译与链接

程序员的自我修养读书笔记

程序员的自我修养 读书笔记 chp4

4.1 空间与地址分配 链接: 将几个输入目标文件加工后合并成一个输出文件的过程 链接方式: 按序叠加 在有很多输入文件的情况下, 输出文件将会有很多零散的段 相似段合并 两步链接: 空间与地...

【读书笔记】程序员的自我修养总结(一)

程序员的自我修养总结(一)声明:引用请注明出处http://blog.csdn.net/lg1259156776/说明:这是程序员的自我修养一书的读书总结,随着阅读的推进,逐步增加内容。1. 关于CP...

程序员的自我修养 读书笔记 chp1

1. 前言知乎上面好多推荐看这本书的, 今天拿起来看看, 做些笔记2. 笔记1.2 万变不离其宗 计算机硬件中几个关键部件: 中央处理器cpu 内存 IO控制芯片 硬件结构框架 北桥: 高速芯...

[读书笔记]程序员的自我修养 chp9

9.1 DLL 简介 dll 文件的扩展名不一定是 dll, 也可以是 ocx dll 文件相比于linux 的共享对象, 更加强调模块化 9.1.1 进程地址空间和内存管理 一个dll 在不同的进程...

推荐:《程序员的自我修养——链接、装载与库》 读书笔记

两天前从同学的书桌上无意间拾起这本书,翻看了前几页,即被他追根溯源的精彩描述吸引,花了两整天的时间,通读完这本书。忍不住写篇读书笔记,以为备忘,如果对其他的朋友有所助益,秉承这开源的精神,就最好了~ ...

《程序员的自我修养》读书笔记1 -- 温故知新和静态链接

内存问题
  • isunn
  • isunn
  • 2014-09-30 09:05
  • 472

程序员的自我修养 读书笔记 chp3

3.1 目标文件的格式 PC 平台流行的可执行文件的格式主要是 windows 下面的 PE 和 Linux 下的ELF, 他们都是COFF 格式的变种 3.2 目标文件是什么样的 一般来说, tex...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)