博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Windows中模块定义文件
阅读量:4696 次
发布时间:2019-06-09

本文共 1916 字,大约阅读时间需要 6 分钟。

Windows中模块定义文件

模块定义文件(.DEF)用来定义应用程序的模块名和模块属性。
对于源文件名、目标文件名、可执行文件名可以由编译命令的参数确定,要记住编译命令的参数也是不容易的。但是,编译Winodws应用程序就不一样了,编译时要考虑的因素就更多,于是,设法把执行文件名等这些参数放在一个文件中,这个文件称为模块定义文件(.DEF).
把应用程序的源文通过编译系统变成为一个可执行的文件,执行文件又称为模块,执行文件名又称为模块名。
模块定义文件(.DEF)和资源描述文件一样,在应用程序通过编译的时候,为编译系统的工作提供必要的信息,例如模块名、模块属性、规定区段的特性、是固定的还是移动的,堆栈的大小,堆存储区的大小,以及模块的输出函数等。
在编译应用程序源码的时候,编译系统根据资源描述文件中提供的资源文件名进行编译,把编译产生的二进制代码文件插入应用程序代码需要资源处,编译完成后需要给应用程序起一个名字,这个名字由用户给出在模块定义文件中。随着编译系统的发展,特别是Visual C++
Developer Studio 对话的方式完成的,这给编程带来了很大的方便。
模块定义文件的格式:
NAME Example...................(1)
DISCRIPTION This is a sample application ........(2)
EXETYPE Windows ......(3)
STUB WINSTUB.exe ........(4)
CODE Moveable Discardable ........(5)
DATA Moveable Multiple............(6)
HEAPSIZE 1024....................(7)
STACKSIZE 5120...................(8)
EXPORTS WndProc..................(9)
说明:
(1) NAME 是模块名,也就是应用程序名经过编译产生的执行文件名,这个条款是必须的
(2) DISCRIPTION 是说明信息,通常说明版本号、版权所有、此说明信息要放到执行文件中。此条款可有可无
(3) EXETYPE 指明执行文件是在Windows条件下运行还是在OS/2条件下运行。
(4) STUB 是代替之意。指明Windows程序在DOS下执行失败后就执行stub指出的执行文件,stub指出的执行文件用来显示提示信息,例如告诉用户应该在Windows下执行应用程序。STUB后面的文件有一个现成的版本,叫做WinSTUB,当然也可以自己设计。
(5) CODE 是执行文件代码在内存中的基本属性,例如:
Moveable 说明模块(执行)代码是可以搬迁的。在多任务环境下,系统中会有很多的应用程序,如果其他应用程序需要一大块内存区域,而你的程序正在这个区域中,如果你的应用程序代码具有Moveable属性,Windows就搬迁你的应用程序代码。当然这些工作是由Windows自动完成的。
Discardable是VS生成时添加的关键字,它指出:必要时WIndows可以从内存中丢弃执行代码的CODE,以获得而外的空间。之后不需要程序任何特定的操作,Windows就能重新载入CODE。Discardable属性是内定的,不需要指定。
(6)DATA 是指明数据在内存中的基本属性。数据段中包括静态变量、堆栈、堆。如果该应用程序允许建立多个instance,那么,DATA后面一定要跟上Multipe说明词,这样,就允许Windows为每个instance建立数据段。
(7)HEAPSIZE 规定应用程序可使用的堆的大小,单位是字节。
(8)STACKSIZE 规定应用程序可使用的堆栈的大小,单位是字节
(9)EXPORTS是说明回叫函数的条款。Windows中有些函数称为回叫函数,这些函数的特点是在窗口和系统之间交互信息,例如WndProc,在设计他们的时候,前面带有CALL BACK说明词,这类函数称为回叫函数。在这里,把回叫函数都称为输出函数。所谓的输出就是输出到屏幕。这类函数一定要在DEF模块定义中经过EXPORTS说明才能由Windows调用。不过,也可以在函数说明的时候,在函数名前加上export,也就达到说明此函数为输出函数的目的,这在DOS程序中是不可行的。

转载于:https://www.cnblogs.com/aswater-yuanye/archive/2013/03/25/2980519.html

你可能感兴趣的文章
2019-3-25多线程的同步与互斥(互斥锁、条件变量、读写锁、自旋锁、信号量)...
查看>>
win7-64 mysql的安装
查看>>
dcm4chee 修改默认(0002,0013) ImplementationVersionName
查看>>
maven3在eclipse3.4.2中创建java web项目
查看>>
发布时间 sql语句
查看>>
黑马程序员 ExecuteReader执行查询
查看>>
记一些从数学和程序设计中体会到的思想
查看>>
题目1462:两船载物问题
查看>>
POJ 2378 Tree Cutting(树形DP,水)
查看>>
第二冲刺阶段个人博客5
查看>>
UVA 116 Unidirectional TSP (白书dp)
查看>>
第三方测速工具
查看>>
MySQL 网络访问连接
查看>>
在aws ec2上使用root用户登录
查看>>
数据访问 投票习题
查看>>
CIO知识储备
查看>>
cnblog!i'm coming!
查看>>
使用点符号代替溢出的文本
查看>>
Axios 中文说明
查看>>
fatal: remote origin already exists.
查看>>