1. 程式人生 > 實用技巧 >對於cl.exe和link.exe的認識(編譯連結一個windows API程式和一個簡單的MFC程式)

對於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 來看。