zoukankan      html  css  js  c++  java
  • 对于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 来看。

  • 相关阅读:
    3.27上午
    3.24上午 补
    2017.3.27下午
    2017.3.27上午
    2017.3.24下午
    2017.3.24上午
    2017.3.23下午
    2017.3.23上午
    2017.3.22上午
    2017.3.21下午
  • 原文地址:https://www.cnblogs.com/Zzxin/p/13817365.html
Copyright © 2011-2022 走看看