《程序员的自我修养》读书笔记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)”,那么编译器就知道它是外部导入的,以便于产生相应的指令形式。


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

[读书笔记]程序员的自我修养(6)

第六章 可执行文件的装载与进程 1. 启动参数将虚拟内存从2GB转到1GB,加入参数/3G [boot loader] timeout=2 default=multi(0)disk(0)rdi...

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

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

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

第一部分:温故而知新 第一章:介绍基本的背景知识——操作系统、线程、硬件1、关于C语言中的hello world这些问题你都清楚吗? 2、计算机硬件设备的三个核心部件: 1》中央处...

《程序员的自我修养》读书笔记(二)

第二章 编译和链接 1 被隐藏了的过程 2 编译器做了什么 3 链接器的年龄比编译器长 4 模块拼装静态链接 5 本章小结 第三章 目标文件中有什么 1目标文件的格式 2目标文件是什么样的 3挖掘Si...

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

【读书笔记】程序员的自我修养总结(六)标签: 【编程开发】声明:引用请注明出处http://blog.csdn.net/lg1259156776/说明:这是程序员的自我修养一书的读书总结,随着阅读的推...

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

从编译,链接到运行,程序员应该了解自己所写的代码最终是怎么成为程序,又怎样在计算机上运行起来的。...

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

程序员的自我修养读书总结和思考

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

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

读书笔记——《程序员自我修养》——编译和链接

大家学C语言时都会写hello world程序 #include int main() { printf("hello world\n"); return 0; } $gcc h...

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

内存 一、程序的内存布局         现代的应用程序都运行在一个内存空间里,比如在32位系统里,这个内存空间拥有4GB的寻址能力,应用程序可以直接使用32位的地址进行寻址,这被称为平坦(flat)...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:《程序员的自我修养》读书笔记6
举报原因:
原因补充:

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