在visual c++下,每编写一个简单的小程序,就得生成一大串中间文件,另人十分的不爽。下面提供一个新的编写c/c++程序的方法:
(1),下载utraledit-32编辑器,推荐v11.
(2),在utraledit-32中,分别点击菜单:高级-工具配置,出现一个dialog,用来设置用户自定义的菜单项。我们的想法是,设置一个编译菜单和运行菜单项,分别用来编译在utraledit-32编写的c/c++源文件。这样,在utraledit-32中编写好程序后,点击这两个菜单,就可以编译程序,和运行程序。运行的结果在utraledit-32的输出框中显示。具体的设置如下。
编译:
1,在命令行中填入:cl %n%e 我们知道,dos下的cl命令用来编译源文件。后面的两个参数%n%e表示要编译的源文件的文件名。(注意每个字母必须是小写的,以下同)
2,在工作目录中填入:%p
3,在菜单项目名中填写 编译,这个名字就是我们要设置的编译菜单项的名字。
4,对于下面的几个复选框,选中输出到列表框和捕获输出。
5,点击 插入 按钮,建立编译菜单项
运行:
1,在命令行中填入:%n
2,在工作目录中填入:%p
3,在菜单项目名中填写 运行,这个名字就是我们要设置的运行菜单项的名字。
4,对于下面的几个复选框,选中输出到列表框和捕获输出。
5,点击 插入 按钮,建立运行菜单项
点击确定退出
这样,在 高级(A) 菜单下面可以看到出现了两个新的菜单:编译和运行
这样,当写好源程序后,点击工具编译和运行菜单,就可以编译和运行程序。最终生成。obj文件和。exe文件。这样的做法,比起使用vc要生成一大堆文件,而且要为每一个程序建立一个文件夹,是不是更加的方便呢?
(3),为编译和运行菜单设置快捷健:
utraledit-32是一个强大的编辑器,可以使用户自己定义各个菜单的快捷健。具体的做法如下:
点击菜单:高级-配置,再选中键映射这一栏,可以看到所有的菜单项对应的快捷健,当然也包括我们刚才生成的两个菜单,如果觉得这两个菜单的快捷键用得不爽的话,可以自己设定。更详细的做法就不说啦。
(4)原理:说了这么多,其实上面用到的是cl命令和utraledit-32提供的一些接口。我们知道,在dos下,可以用cl命令来编译c/c++程序(当然估计没人有会真的这么做)。而utraledit-32提供了一个接口,可以建立菜单项,通过点击菜单项来执行dos下的命令。需要考虑的是,dos下的cl命令要求提供源文件的文件名作为参数,这个参数,在utraledit-32用%n%e来代替。当然,也可以为%N%E,但推荐使用小写,大小写的区别请看utraledit-32的帮助文档。
8-7:补充:如果要编译链接生成DLL文件,把编译命令改为: cl %n%e /LD ,需要说明的是,生成exe文件的命令和生成dll文件的命令不能相互换用,所以,如果在utraledit下经常性地开发dll程序的话,还得再创建个编译dll文件得菜单为好,这样就避免了编译两种文件的时候改来改去。
附:如何在上述环境下编写win32 GUI程序:
上面的编程环境与用户是通过DOS控制台进行,但有时候觉得console too simple& naive啦,所以,想用些按钮,编辑框换换,但用VC又有上文所述的种种不爽。幸好,在程序前面加上如下代码,就可以用自己打造的简易环境来开发GUI了。
#pragma comment(linker,"/subsystem:windows")
#pragma comment(lib,"user32.lib")
#pragma comment(lib,"gdi32.lib")
说明:第一行指链接程序时按照/subsystem:windows格式进行链接。我们知道,在VC中,对于应用程序有两种链接方式,一种是/subsystem:console,当用这种方式链接时,程序与用户交互将通过console进行。另一种就是上面的/subsystem:windows,这种情况下,程序与用户交互通过程序中的GUI进行。
仅仅指定上述链接格式还不够,因为GUI函数,如MessageBox,TextOut等,是放在user32.lib和gdi32.lib中的,但是直接用cl命令编译,并不会链接到这两个lib。所以,必须在程序前面加上第二行和第三行,才能进行GUI的开发。
另附:
#pragma comment( comment-type [,"commentstring"] )
comment-type是一个预定义的标识符,指定注释的类型,应该是compiler,exestr,lib,linker之一。
commentstring是一个提供为comment-type提供附加信息的字符串。
注释类型:
1、compiler:
放置编译器的版本或者名字到一个对象文件,该选项是被linker忽略的。
2、exestr:
在以后的版本将被取消。
3、lib:
放置一个库搜索记录到对象文件中,这个类型应该是和commentstring(指定你要Linker搜索的lib的名称和路径)这个库的名字放在Object文件的默认库搜索记录的后面,linker搜索这个这个库就像你在命令行输入这个命令一样。你可以在一个源文件中设置多个库记录,它们在object文件中的顺序和在源文件中的顺序一样。如果默认库和附加库的次序是需要区别的,使用Z编译开关是防止默认库放到object模块。
4、linker:
指定一个连接选项,这样就不用在命令行输入或者在开发环境中设置了。
另附:
利用vc 6.0目录下的cl.exe直接编译程序的方法[整理]
这是解决上面设置中,如果安装VC的时候没有设置环境变量的时候出现“cl不是内部或外部命令~~~”的方法
copy from : http://dev.csdn.net/author/kgdiwss/03f945afa2844c3c84355a3bf2a72a65.html
1.在“我的电脑——属性——高级——环境变量”中, 添加如下变量:
INCLUDE
D:\Program Files\Microsoft Visual Studio\VC98\Include
LIB
D:\Program Files\Microsoft Visual Studio\VC98\Lib
PATH
X:\Program Files\Microsoft Visual Studio\Common\MSDev98\Bin;X:\Program Files\Microsoft Visual Studio\VC98\Bin
X表示安装盘符,注意这里是两个路径,因为cl.exe要用到MSDev98\Bin目录下的MSPDB60.DLL.
如果已经存在这些变量,则把以上值分别加在对应的变量值的后面,注意在添加前用分号隔开。
2.重启电脑
3.打开命令提示符,输入:
cl hello.c
回车后就会在目录下生成hello.exe和hello.obj.
附:
CL.exe 是控制 Microsoft C 和 C++ 编译器与链接器的 32 位工具。编译器产生通用对象文件格式 (COFF)
对象 (.obj) 文件。链接器产生可执行文件 (.exe) 或动态链接库文件 (DLL)。
注意,所有编译器选项都区分大小写。
用法如下:
CL [option...] file... [option | file]... [lib...] [@command-file] [/link link-opt...]
option : 一个或多个 CL 选项。请注意,所有选项都应用于所有指定的源文件。选项是由一个
正斜杠 (/) 或一个短划线 (-) 指定的。如果某个选项带有参数,则该选项的说明指
定在选项和参数之间是否允许有空格。选项名(/HELP 选项除外)区分大小写。