在生成def文件时,可以手动编写文件内容,也可以使用一些开发工具,比如Visual Studio编译器、gcc编译器等,在编译程序时自动生成对应的def文件。
需要注意的是,在大部分情况下,系统会自动处理DLL文件的导出、内存管理等过程,因此开发者不需要手动编写def文件。只有在特殊的情境下,比如需要将同一份DLL库在不同的开发环境中进行编译、部署时,才需要手动编写和使用def文件。
.APS:存放二进制资源的中间文件,VC把当前资源文件转换成二进制格式,并存放在APS文件中,以加快资源装载速度。资源辅助文件。 \x0d\x0a\x0d\x0a.BMP:位图资源文件。 \x0d\x0a\x0d\x0a.BSC:浏览信息文件,由浏览信息维护工具(BSCMAKE)从原始浏览信息文件(.SBR)中生成,BSC文件可以用来在源代码编辑窗口中进行快速定位。用于浏览项目信息的,如果用source brower的话就必须有这个文件。可以在project options里去掉Generate Browse Info File,这样可以加快编译进度。 \x0d\x0a\x0d\x0a.C:用C语言编写的源代码文件。 \x0d\x0a\x0d\x0a.CLW:ClassWizard生成的用来存放类信息的文件。classwizard信息文件,ini文件的格式。 \x0d\x0a\x0d\x0a.CNT:用来定义帮助文件中“Contents”的结构。 \x0d\x0a\x0d\x0a.CPP或.CXX:用C++语言编写的源代码文件。 \x0d\x0a\x0d\x0a.CUR:光标资源文件。 \x0d\x0a\x0d\x0a.DEF:模块定义文件,供生成动态链接库时使用。 \x0d\x0a\x0d\x0a.DLG:定义对话框资源的独立文件。这种文件对于VC工程来说并非必需,因为VC一般把对话框资源放在.RC资源定义文件中。 \x0d\x0a\x0d\x0a.DSP:VC开发环境生成的工程文件,VC4及以前版本使用MAK文件来定义工程。项目文件,文本格式。 \x0d\x0a\x0d\x0a.DSW:VC开发环境生成的WorkSpace文件,用来把多个工程组织到一个WorkSpace中。工作区文件,与.dsp差不多。 \x0d\x0a\x0d\x0a.EXP:由LIB工具从DEF文件生成的输出文件,其中包含了函数和数据项目的输出信息,LINK工具将使用EXP文件来创建动态链接库。只有在编译DLL时才会生成,记录了DLL文件中的一些信息。 \x0d\x0a\x0d\x0a.H、.HPP或.HXX:用C/C++语言编写的头文件,通常用来定义数据类型,声明变量、函数、结构和类。 \x0d\x0a\x0d\x0a.HLP:Windows帮助文件。 \x0d\x0a\x0d\x0a.HM:在Help工程中,该文件定义了帮助文件与对话框、菜单或其它资源之间ID值的对应关系。 \x0d\x0a\x0d\x0a.HPJ:由Help Workshop生成的Help工程文件,用来控制Help文件的生成过程。 \x0d\x0a\x0d\x0a.HPG,生成帮助的文件的工程。 \x0d\x0a\x0d\x0a.ICO:图标资源文件。 \x0d\x0a\x0d\x0a.ILK:连接过程中生成的一种中间文件,只供LINK工具使用。 \x0d\x0a\x0d\x0a.INI:配置文件。 \x0d\x0a\x0d\x0a.LIB:库文件,LINK工具将使用它来连接各种输入库,以便最终生成EXE文件。 \x0d\x0a\x0d\x0a.LIC:用户许可证书文件,使用某些ActiveX控件时需要该文件。 \x0d\x0a\x0d\x0a.MAK:即MAKE文件,VC4及以前版本使用的工程文件,用来指定如何建立一个工程,VC6把MAK文件转换成DSP文件来处理。 \x0d\x0a\x0d\x0a.MAP:由LINK工具生成的一种文本文件,其中包含有被连接的程序的某些信息,例如程序中的组信息和公共符 \x0d\x0a\x0d\x0a号信息等。执行文件的映像信息记录文件。 \x0d\x0a\x0d\x0a.MDP:旧版本的项目文件,相当于.dsp \x0d\x0a\x0d\x0a.NCB:NCB是“No Compile Browser”的缩写,其中存放了供ClassView、WizardBar和Component Gallery使用的信息,由VC开发环境自动生成。无编译浏览文件。当自动完成功能出问题时可以删除此文件。编译工程后会自动生成。 \x0d\x0a\x0d\x0a.OBJ:由编译器或汇编工具生成的目标文件,是模块的二进制中间文件。 \x0d\x0a\x0d\x0a.ODL:用对象描述语言编写的源代码文件,VC用它来生成TLB文件。 \x0d\x0a\x0d\x0a.OLB:带有类型库资源的一种特殊的动态链接库,也叫对象库文件。 \x0d\x0a\x0d\x0a.OPT:VC开发环境自动生成的用来存放WorkSpace中各种选项的文件。工程关于开发环境的参数文件。如工具条位置信息等。 \x0d\x0a\x0d\x0a.PBI、.PBO和.PBT:由VC的性能分析工具PROFILE生成并使用的三种文件。 \x0d\x0a\x0d\x0a.PCH:预编译头文件,比较大,由编译器在建立工程时自动生成,其中存放有工程中已经编译的部分代码,在以后建立工程时不再重新编译这些代码,以便加快整个编译过程的速度。 \x0d\x0a\x0d\x0a.PDB:程序数据库文件,在建立工程时自动生成,其中存放程序的各种信息,用来加快调试过程的速度。记录了程序有关的一些数据和调试信息。 \x0d\x0a\x0d\x0a.PLG:编译信息文件,编译时的error和warning信息文件。 \x0d\x0a\x0d\x0a.RC:资源定义文件。 \x0d\x0a\x0d\x0a.RC2:资源定义文件,供一些特殊情况下使用。 \x0d\x0a\x0d\x0a.REG:注册表信息文件。 \x0d\x0a\x0d\x0a.RES:二进制资源文件,资源编译器编译资源定义文件后即生成RES文件。 \x0d\x0a\x0d\x0a.RTF:Rich Text Format(丰富文本格式)文档,可由Word或写字板来创建,常被用来生成Help文件。 \x0d\x0a\x0d\x0a.SBR:VC编译器为每个OBJ文件生成的原始浏览信息文件,浏览信息维护工具(BSCMAKE)将利用SBR文件来生成BSC文件。 \x0d\x0a\x0d\x0a.TLB:OLE库文件,其中存放了OLE自动化对象的数据类型、模块和接口定义,自动化服务器通过TLB文件就能了解自动化对象的使用方法。 \x0d\x0a\x0d\x0a.WAV:声音资源文件。模块定义文件(.def)模块定义文件是一个有着.def文件扩展名的文本文件。它被用于导出一个DLL的函数,和__declspec(dllexport)很相似,但是.def文件并不是Microsoft定义的。一个.def文件中只有两个必需的部分:LIBRARY
和
EXPORTS。让我们先看一个基本的.def文件稍后我将解析之。
LIBRARY
dll_tutorial
DESCRIPTION
"our
simple
DLL"
EXPORTS
Add
@1
Function
@2
第一行,''LIBRARY''是一个必需的部分。它告诉链接器(linker)如何命名你的DLL。下面被标识为''DESCRIPTION''的部分并不是必需的,但是我喜欢把它放进去。该语句将字符串写入
.rdata
节[据
MSDN],它告诉人们谁可能使用这个DLL,这个DLL做什么或它为了什么(存在)。再下面的部分标识为''EXPORTS''是另一个必需的部分;这个部分使得该函数可以被其它应用程序访问到并且它创建一个导入库。当你生成这个项目时,不仅是一个.dll文件被创建,而且一个文件扩展名为.lib的导出库也被创建了。除了前面的部分以外,这里还有其它四个部分标识为:NAME,
STACKSIZE,
SECTIONS,
和
VERSION。我将不再在本文中涉及这些内容,但是如果你在Internet上搜索,我想你将找到一些东西(译注:
MSDN2003上对模板定义文件各部分内容有详尽解释,请参阅)。另外,一个分号()开始一个注解。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)