制造方式
在Windows 环境下的DOS Box 中,或是在Windows 版本的各种C++ 编译器套件的
整合环境(IDE )中(第4章「Console 程序项目管理」),利用Windows 编译器、联
结器做出来的程序,都是所谓Win32 程序。如果程序是以main 为进入点,调用C
runtime GUI Win32 API console console
函数和「不牵扯 」的 函数,那么就是一个 程序,
窗口将成为其标准输入和输出装置(cin 和cout )。
过去在DOS 环境下开发的程序,称为DOS 程序,它也是以main 为程序进入点,可
以调用C runtime 函数。但,当然,不可能调用Win32 API 函数。
程序能力
过去的DOS 程序仍然可以在Windows 的DOS Box 中跑(Win95 的兼容性极高,
WinNT 的兼容性稍差)。
29
…………………………………………………………Page 92……………………………………………………………
Console 程序当然更没有问题。由于console 程序可以调用部份的Win32 API (尤其是
KERNEL32。DLL 模块所提供的那一部份),所以它可以使用Windows 提供的各种高级
processes threads
功能。它可以产生进程( ),产生执行线程( )、取得虚拟内存的信息、
刺探操作系统的各种资料。但是它不能够有华丽的外表…因为它不能够调用与GUI 有
关的各种API 函数。
DOS console pr intf cout scanf
程序和 程序两者都可以做 输出和 输出,也都可以做 输
入和cin 输入。
可执行档格式
DOS 程序是所谓的MZ 格式(MZ 是Mark Zbikowski 的缩写,他是DOS 系统的一位
Console Win32 PE Portable
主要构造者)。 程序的格式则和所有的 程序一样,是所谓的 (
Executable Win32
)格式,意思是它可以被拿到任何 平台上执行。
Visual C++ 附有一个DUMPBIN 工具软件,可以观察PE 文件格式。拿它来观察本节
的JBACKUP 程序和MFCCON 程序(以及第3章的所有程序),得到这样的结果:
H:u004progjbackup 。01》dumpbin /summary jbackup 。exe
Microsoft (R) COFF Binary File Dumper Version 5。00。7022
Copyright (C) Microsoft Corp 1992…1997。 All rights reserved。
Dump of file jbackup 。exe
File Type: EXECUTABLE IMAGE
Summary
5000 。data
1000 。idata
1000 。rdata
5000 。text
拿它来观察DOS 程序,则得到这样的结果:
30
…………………………………………………………Page 93……………………………………………………………
C:UTILITY》dumpbin /summary dsize。exe
Microsoft (R) COFF Binary File Dumper Version 5。00。7022
Copyright (C) Microsoft Corp 1992…1997。 All rights reserved。
Dump of file dsize。exe
DUMPBIN : warning LNK4094: 〃dsize。exe〃 is an MS…DOS executable;
use EXEHDR to dump it
Summary
Console 程序的编译联结
你可以写一个makefile,编译时指定常数/D_CONSOLE ,联结时指定subsystem 为
console ,如:
#0001 # filename : pedump。mak
#0002 # make file for pedump。exe
#0003 # usage : nmake pedump。msc (Visual C++ 5。0)
#0004
#0005 all : pedump。exe
#0006
#0007 pedump。exe: pedump。obj exedump。obj objdump。obj mon。obj
#0008 link /subsystem:console /incremental:yes
#0009 /machine:i386 /out:pedump。exe
#0010 pedump。obj mon。obj exedump。obj objdump。obj
#0011 kernel32。lib user32。lib
#0012
#0013 pedump。obj : pedump。c
#0014 cl /W3 /GX /Zi /YX /Od /DWIN32 /D_CONSOLE /FR /c pedump。c
#0015
#0016 mon。obj : mon。c
#0017 cl /W3 /GX /Zi /YX /Od /DWIN32 /D_CONSOLE /FR /c mon。c
#0018
#0019 exedump。obj : exedump。c
#0020 cl /W3 /GX /Zi /YX /Od /DWIN32 /D_CONSOLE /FR /c exedump。c
#0021
#0022 objdump。obj : objdump。c
#0023 cl /W3 /GX /Zi /YX /Od /DWIN32 /D_CONSOLE /FR /c objdump。c
如果是很简单的情況,例如本节的 JBACKUP 只有一个 C 原代码,那么这样也行 (在
命令列之下):
cl jbackup。c A 将获得 jbackup。exe
31
…………………………………………………………Page 94……………………………………………………………
注意,环境变量要先设定好(请参考本章稍早的「如何产生Generic。exe 」一节)。
第3章的Frame_ 程序则是这样完成的:
cl my。cpp mfc。cpp my。exe
将获得
至于到底该联结哪些链接库,全让CL。EXE 去伤脑筋就好了。
JBACKUP :Win32 Console 程序设计
撰写console 程序,有几个重点请注意:
1。 进入点为main 。
pr intf scanf cin cout
2。 可以使用 、 、 、 等标准输出入装置。
3。 可以调用和GUI 无关的Win32 API 。
我的这个JBACKUP 程序可以有一个或两个参数,用法如下:
C:SomeoneDir》JBACKUP SrcDir 'DstDir'
例如JBACKUP g: k:
将磁盘目录SrcDir 中的新文件拷贝到磁盘目录DstDir ,
并将DstDir 的赘余文件杀掉。
DstDir k: …MO …
如果没有指定 ,预设为 (那是我的可写入光驱 的代码啦)
并将k: 的磁盘目录设定与SrcDir 相同。
例如JBACKUP g:
而目前g: 是g:u002doc
g:u002doc k:u002doc k:u002doc
那么相当于把 备份到 中,并杀掉 的赘余文件。
JBACK 检查SrcDir 中所有的文件和DstDir 中所有的文件,把比较新的文件从SrcDir
中拷贝到DstDir 去,并把Ds
小说推荐
- Java编程思想第4版[中文版](PDF格式)
- -Page 1-Page 2《Thinking In Java》中文版作者:Bruce Eckel主页:http/BruceEckel.编译:Trans Bot主页:http/memberease~transbot致谢-献给那些直到现在仍在孜孜不倦创造下一代计算机语言的人们!指导您利用万维网的语言进
- 其他
- 最新章:第295章
- VB2008从入门到精通(PDF格式英文版)
- -Page 1(R)The eXperT’s Voice inBeginningVB 2008From Novice to ProfessionalChristian Gross-Page 2-Page 3-Beginning VB 2008From Novice to Professional■C
- 其他
- 最新章:第214章
- oracle从入门到精通(PDF格式)
- -Page 1-Oracle 从入门到精通-Page 2-资源来自网络,仅供学习 Oracle 从入门到精通一、SQL 8
- 其他
- 最新章:第37章
- C语言游戏编程从入门到精通(PDF格式)
- -Page 1-Page 2-Page 3-Page 4-Page 5-Page 6-Page 7-Page 8-Page 9-Page 10-Page 11-Page 12-Page 13-Page 14
- 其他
- 最新章:第4章
- 深入浅出
- 《深入浅出》作者:白小骨晋江VIP20140610完结+1番外非V章节总点击数:67370 总书评数:209 当前被收藏数:764 文章积分:11,386,657文案:每个前男友都是女人掉过的坑,从何典阳这个坑里往外爬的梁温暖一脸血表示,何典阳他这个深坑实在太坑爹。何典阳:我是坑?梁温暖…别看我,我
- 激情
- 最新章:第74章
- 深入浅出[娱乐圈]
- 文案【忠犬影帝攻X傲娇明星受,1V1轻松甜文,前期互相试探,38章在一起后甜甜甜,两人都有细微的变化和成长~这也是我用心构思攻受感情发展的文,但数据有点太惨了,没入V可以全文免费看,还是想求点收藏呀,数据好看点吧,让我开心一下(笑哭.jpg)流量偶像白漾和影帝顾瑜祁关系很僵,传言两人出道时不合而互相
- 激情
- 最新章:第59章
- JMS简明教程(PDF格式)
- -Page 1-JMS1.1规范中文版卫建军2007‐11‐22-Page 2
- 其他
- 最新章:第28章
- SQL语言艺术(PDF格式)
- -Page 1-SQLSSQQLL语言艺术内容介绍本书分为12章,每一章包含许多原则或准则,并通过举例的方式对原则进行解释说明。这些例子大多来自于实际案例,对九种SQL经典查询场景以及其性能影响讨论,非常便于实践,为你数据库应用维护人员阅读。资深 SQL 专家 Stéphane Faroult倾力打
- 其他
- 最新章:第27章
- C语言实例教程(PDF格式)
- -Page 1-前 言Visual C+是开发运行于Windows 95和Windows NT环境下的Win32应用程序的可视化编程工具中最重要的成员之一,它为软件开发人员提供了完整的编辑、编译和调试工具和建立于Win32 API(ApplicationProgramming Interface)基
- 其他
- 最新章:第143章