对于cl.exe和link.exe的认识(编译链接一个windows API程序和一个简单的MFC程序)
前言:源代码的编译过程共分为两个步骤:一是编译过程,主要工作是把我们的源代码翻译成中间文件,这在windows中就是cl.exe的作用,它将我们的.c文件或者.cpp文件翻译成中间.obj文件;二是连接过程,主要工作是将多种中间文件、库文件连接生成可执行文件,这在windows中就是link.exe的作用,它将.obj文件和库文件等链接成exe程序。
一、 创建一个简单的MFC程序
工具:visual c++ 6.0
操作系统:虚拟机下的windows XP
步骤
-
打开visual c++6.0,在新建中选择工程下的MFC App Wizard[exe],填下项目名字,因为只是一个简单的MFC认识程序所以这里用到万能的helloworld
-
选择单个文档然后一路点下一步
-
进行到最后的时候会提示该工程的所有信息,点击finish即可完成创建
-
因为这是一个MFC认识程序就不多做代码书写,编译一下看下最后的样子
二、用cl.exe和link.exe编译链接
工具:cmd
步骤(windows API)
-
打开cmd进入到程序的源代码文件
-
使用cl.exe命令对.cpp文件翻译成.obj文件
cl.exe hello2020.cpp
-
使用link.exe命令将.obj文件和库文件等链接成.exe程序
link.exe hello2020.obj user32.lib gdi32.lib
-
点击生成的exe文件和编译器生成的程序对比,最后得出一样的结论
MFC步骤同上,
cl.exe helloworld.cpp
link.exe helloworld.obj user32.lib gdi.lib
只是要注意库lib的不同,这里分享一个查看程序库支持的方法
看程序背后需要哪些静态库lib、动态库dll支持,可以用dumpbin.exe 或者 depends.exe 来看。