使用cl.exe在windows控制台下编译C++程序

来源:互联网 发布:网络kvm 编辑:程序博客网 时间:2024/05/16 01:38

工具

cl.exe 是控制 Microsoft C 和 C++ 编译器与链接器的 32 位工具。编译器将.cpp编译,生成中间代码目标文件(.obj)。链接器将目标文件链接,产生可执行文件 (.exe) 或动态链接库文件 (DLL)。

link.exe 是将目标文件和库链接起来以创建 32 位可执行 (.exe) 文件或动态链接库 (DLL) 的 32 位工具。

rc.exe 是将windows资源文件(.rc)编译成资源文件(.res),从而与目标文件链接,一般用于设置exe文件的图标和属性或者dll包含的资源。

lib.exe是将目标文件链接生成静态库文件(.lib),也可以用于生成dll的lib文件。

环境配置

那么这4个exe文件在哪个目录下呢?我的vs装在了E盘,然后我在 E:\vs2013\VC\bin 目录下找到了cl.exe,link.exe,lib.exe,但是没找到rc.exe,于是我在C盘看了看,结果在C:\Program Files (x86)\Windows Kits\8.1\bin\x64 目录下找到了,后来我又发现这些exe似乎不止一份,在很多目录下都有,真奇怪。。。好吧,找到了后把所在目录加入Path环境变量就可以了。

光这样还不行,还得把一些头文件和lib库也加入环境变量,目录如下:

//这4个加入INCLUDE环境变量E:\vs2013\VC\include;C:\Program Files (x86)\Windows Kits\8.1\include\shared C:\Program Files (x86)\Windows Kits\8.1\include\um C:\Program Files (x86)\Windows Kits\8.1\include\winrt//这2个加入LIB环境变量E:\vs2013\VC\libC:\Program Files (x86)\Windows Kits\8.1\Lib\winv6.3\um\x64

使用

以生成dll为例:

  1. 先用cl命令将.cpp编译成.obj,-c选项的作用:只编译不链接,不然cl还会试图链接生成exe,但dll工程根本没有main函数,没法生成exe,所以就会出错了。
    cl -c dllmain.cpp dllclass.cpp
  2. 如果有资源文件(.rc),那么用rc.exe将.rc编译成.res
    rc dllsource.rc
  3. 用link命令将.obj .rc等文件 链接,生成dll文件及对应的.lib .exp
    link -dll dllmain.obj dllclass.obj dllsource.res

更多详细内容

cl.exe命令参数详解
cl&link用法
msdn在命令行上编译C++程序