對於cl.exe和link.exe的認識(編譯連結一個windows API程式和一個簡單的MFC程式)
阿新 • • 發佈:2020-10-14
前言:原始碼的編譯過程共分為兩個步驟:一是編譯過程,主要工作是把我們的原始碼翻譯成中間檔案,這在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 來看。