工具
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\lib
C:\Program Files (x86)\Windows Kits\8.1\Lib\winv6.3\um\x64
使用
以生成dll为例:
- 先用cl命令将.cpp编译成.obj,-c选项的作用:只编译不链接,不然cl还会试图链接生成exe,但dll工程根本没有main函数,没法生成exe,所以就会出错了。
cl -c dllmain.cpp dllclass.cpp
- 如果有资源文件(.rc),那么用rc.exe将.rc编译成.res
rc dllsource.rc
- 用link命令将.obj .rc等文件 链接,生成dll文件及对应的.lib .exp
link -dll dllmain.obj dllclass.obj dllsource.res