对于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

步骤

  1. 打开visual c++6.0,在新建中选择工程下的MFC App Wizard[exe],填下项目名字,因为只是一个简单的MFC认识程序所以这里用到万能的helloworld

  2. 选择单个文档然后一路点下一步

  3. 进行到最后的时候会提示该工程的所有信息,点击finish即可完成创建

  4. 因为这是一个MFC认识程序就不多做代码书写,编译一下看下最后的样子

二、用cl.exe和link.exe编译链接

工具:cmd

步骤(windows API)

  1. 打开cmd进入到程序的源代码文件

  2. 使用cl.exe命令对.cpp文件翻译成.obj文件

    cl.exe hello2020.cpp
    

  3. 使用link.exe命令将.obj文件和库文件等链接成.exe程序

    link.exe hello2020.obj user32.lib gdi32.lib
    

  4. 点击生成的exe文件和编译器生成的程序对比,最后得出一样的结论

MFC步骤同上,

cl.exe helloworld.cpp
link.exe helloworld.obj user32.lib gdi.lib

只是要注意库lib的不同,这里分享一个查看程序库支持的方法

https://blog.csdn.net/fuhanghang/article/details/84404433?utm_medium=distribute.pc_relevant_bbs_down.none-task-blog-baidujs-1.nonecase&depth_1-utm_source=distribute.pc_relevant_bbs_down.none-task-blog-baidujs-1.nonecase

看程序背后需要哪些静态库lib、动态库dll支持,可以用dumpbin.exe 或者 depends.exe 来看。

posted @ 2020-10-14 21:05  一蓑烟雨任平生噶  阅读(501)  评论(0编辑  收藏  举报