MDL开发环境使用一些变量来定义各种环境参数(表1-1)。 
表1-1、MDL开发环境变量列表 
变量 
描述 
类型 
缺省值 
MS 
MicroStation系统目录 
环境变量 
 
MDL_COMP 
mcomp和rsctype的命令行参数 
环境变量 
-I%MS% 
RSC_COMP 
rcomp的命令行参数 
环境变量 
-I%MS% 
BMAKE_OP 
bmake的命令行参数 
环境变量 
-I%MS% 
MS_MDL 
搜寻MDL应用的路径 
配置变量 
 
MS_MDLAPPS 
在MDL对话框中列出的应用程序 
配置变量 
 
 
在DOS和Windows NT操作系统中,环境变量可以在AUTOEXEC.BAT中设置,同时需要在其中设置的还有MicroStation系统路径。用户级别的环境变量设置可以从MicroStation命令窗口中选择User --> Workspace option --> Modify User Configuration option菜单(如图2-1所示)激活变量设置对话框(图2-2),在该对话框中选择需要配置的变量进行设置。 
 
图2-1、通过菜单激活变量设置对话框 
图2-2、变量设置对话框 
二、MDL应用的结构 
一个MDL应用由两个主要的部分组成,即程序部分与资源部分。其中程序部分是必须的,而资源部分是可选的。 
 
三、程序代码(Program Code) 
程序文件以 .MC为扩展名,该文件中包含实现各种功能的函数代码。MC文件中的函数可以有如下几种类型: 
主函数(Main Function) 
 
与标准C语言不同,MDL中的主函数可以缺省。主函数通常用于应用程序的初始化,在该应用载入时执行。 
2、命令处理函数(Command Process Function) 
该函数基于用户事件(User Events)定义应用程序的执行命令。 
3、钩子函数(Hook Function) 
这种函数通常与对话框或者对话框中的Item相联系,用于修改和增加其功能。 
 
 
 
 
四、资源代码(Resource Code) 
 
资源文件以 .R为扩展名,用于定义应用程序的用户界面部分,以下是几种类型的资源组件。资源文件不是一个MDL应用所必须的。 
 
对话框定义(Dialog Box Dinfintions)用于定义对话框以及对话框中的元素(Item)。 
命令表(Command Tables) 用于映射键入命令到命令处理函数。 
消息列表(Message Lists)用于存储处理期间的消息及提示信息的文本字符串。 
 
五、头文件(Head Files) 
 
头文件以 .H为扩展名,用于给程序常量设置识别名以及定义将要在多个源码(程序)文件中使用的变量。使用时将头文件包含(Include)到程序文件中。 
 
六、函数声明文件 
 
函数声明文件以 .FDF为扩展名,用于声明函数原型(prototype)。这有助于减少诸如函数提前引用(即在定义函数之前引用)的编译错误,同时方便了调用函数时的参数检查。MDL使用ANSI C语言的函数原型声明。在MicroStaion系统目录下的MDL\INCLUDE目录中存放着MDL内部函数的原型声明文件(*.FDF)。 
 
 
 
七、MDL工具 
表2-1、MDL工具列表 
工具 
描述 
mcomp 
MDL源程序编译器(生成目标代码) 
mlink 
链接器(链接库文件中的有关目标代码到程序中) 
mlib 
对象库管理器(用于维护库文件中的目标代码) 
rcomp 
资源编译器 
rlib 
资源库管理器(比如把多个资源文件链接到一个资源文件或者程序文件) 
rsctype 
类型(Type)生成器 
(用于生成类型定义以便对话框管理器可以在运行时模拟C表达式) 
bmake 
(CLIX & DOS) 
bmakewin 
(Windows NT) 
MDL应用编译器 
(用于编译工程文件中指定的应用程序) 
 
 
八、MDL Compiler -- mcomp 
mcomp用于把源程序编译成目标码,即把 .MC文件编译成 .MO文件。 
.MC ----> .MO 
 
l 语法 
mcomp [-参数1 -参数2 …] 源文件名 
 
l 参数 
 
-c 只编译,不联结 
-g 生成调试信息 
-idir 使用dir目录中的头文件 
-pi 显示头文件 
 
l 编译参数的环境变量设置 
MDL_COMP环境变量可用于设置mcomp编译命令行参数,以下是DOS & Windows NT操作系统下autoexec.bat文件中的环境变量设置示范。 
SET MDL_COMP=-I\WIN32APP\INGR\USTATION\MDL\INCLUDE 
 
九、MDL Linker -- mlink 
 
mlink用于链接mcomp产生的目标码和编译库,生成应用或程序文件。 
.MO, .ML ---> .MP, .MA 
l 语法 
mlink [-参数1 -参数2 ] 输入文件名 
l 参数 
-afile 指定输出文件(默认为输入文件名.MA) 
-g[d|n|o] 产生调试信息 
-gd和-g:产生所有可用的调试信息 
-gn:产生部分调试信息 
-go:不产生任何调试信息 
-ssize 指定MicroStation之外的运行堆栈大小,若未指定,mlink将基于内部算法产生一个默认堆栈大小。 
 
十、MDL Libarian-- mlib 
 
mlib用于把MDL目标码联结到编译库文件中 
.MO ---> .ML 
l 语法 
mlib 命令[v/c] 库文件 [输入文件] 
l 命令 
a 增加object到库 
d 从库中删除object 
t 显示库文件内容 
x 从库中还原object 
设置参数v将显示较多的信息。 
如果需要更新库中内容,必须先删除要更新的Object,然后再加入新的Object。 
十一、Resource Compiler-- rcomp 
 
rcomp工具用于把资源源文件编译成二进制的资源目标文件。默认的输出文件是 .RSC文件,对命令表文件,也可为其产生 .H 头文件。 
.R ---> .RSC, .H 
 
l 语法 
rcomp [-参数1 -参数2 … ] 输入文件 
l 参数 
-h 产生头文件 
-idir 使用dir目录中的头文件 
-pi 显示头文件 
l 编译参数的环境变量设置 
RSC_COMP可用于指定编译命令行参数。以下是DOS & Windows NT操作系统autoexec.bat文件中的环境变量设置示范。 
SET RSC_COMP=-I\WIN32APP\INGR\USTATION\MDL\INCLUDE 
十二、Resource Librarian-- rlib 
 
该工具用于联结资源目标代码文件和应用程序文件到一个单一MDL应用或者资源目标代码文件。默认的输出是 .RSC文件。 
.RSC, .MP ---> .MA .RSC 
l 语法 
rlib [-参数1 -参数2 …] 输入文件 
l 参数 
-ofile 指定输出文件(默认为输入文件名.MA) 
-v 冗余开关(若指定,将产生较多的输出信息) 
十三、Type Generator -- rsctype 
 
该工具用于从包含C类型定义(C type definitions)的文件中产生资源源文件。因为对话框管理器不能“理解”结构(structure)以及联合(union)中的数据。所以rsctype工具将分离结构及联合中的数据,并把它们转换存储到资源源文件(.H)中。 
type.mt ---> type.r 
 
l 语法 
rsctype [-参数1 -参数2…] 输入文件 
l 参数 
-idir 使用dir目录中的头文件 
-pi 显示头文件 
注意!命名自己的type文件时一定要小心,因为如果不按惯例命名,就有覆盖已有 .R文件的危险。 
l 编译参数的环境变量设置 
MDL_COMP可用于指定编译命令行参数。以下是DOS & Windows NT操作系统autoexec.bat文件中的环境变量设置示范。 
SET MDL_COMP=-I\WIN32APP\INGR\USTATION\MDL\INCLUDE 
 
 
 
十四、文件类型 
 
在MDL开发应用过程中的不同阶段,将有不同类型的文件产生或使用到,不同的文件类型通过相应的文件扩展名来区别。 
 
1、创建资源时用到的文件类型 
表2-2、创建资源时用到的文件类型 
扩展名 
描述 
cmd.r 
包含命令表的资源源文件 
cmd.h 
包含应用命令号的头文件,由rcomp -h产生 
cmd.rsc 
编译后的命令表资源文件 
 
 
扩展名 
描述 
typ.mt 
包含C结构和联合的类型文件 
typ.r 
rsctype产生的资源源文件 
typ.rsc 
编译后的类型资源文件 
 
 
扩展名 
描述 
.r 
资源源文件 
.rsc 
编译后的资源源文件 
 
 
扩展名 
描述 
msg.r 
包含消息资源的资源源文件 
msg.rsc 
编译后的消息资源文件 
 
 
扩展名 
描述 
dlg.r 
包含对话框及其item资源的资源源文件 
dlg.rsc 
编译后的对话框及其item的资源文件 
 
 
2、创建程序时用到的文件类型 
表4、创建程序时用到的文件类型 
扩展名 
描述 
.h 
源程序用到的标准头文件 
txt.h 
包含文本串的头文件 
.fdf 
包含函数原型的函数声明文件 
.mc 
MDL源程序文件 
.mo 
由.mc文件编译成的目标文件 
.mp 
用mlink生成的程序文件 
.ml 
用mlib生成的包含目标代码的库文件 
.mi 
rlib产生的中间文件 
.ma 
应用文件(MicroStation中运行) 
 
 
十五、MDL文件类型及相互其关系 
 
图4表明了不同的MDL应用组件是如何编译到一起的。 
 
图4、MDL文件类型及其相互关系 
 
十六、间接命令行参数 
 
以上提到的这些开发工具,在实际使用过程中都要键入大量命令行参数,有没有减少这种烦琐的参数输入的方法呢?有,那就是使用参数文件(option files)把经常使用的参数设置写到一个文本文件中,然后在命令行中加上 @option_file,即: 
command @option_file
TAG: 测量
发表评论
【声明】 路桥吾爱刊载的资讯及其他内容均由网友提供分享 并且纯属作者个人观点,不表示路桥吾爱同意其说法或描述,仅为提供更多信息,也不构成任何建议。网友转载请注明原作者姓名及出处。如有侵犯到您的版权,请与我们联系,我们会马上进行重新整理!