一 從程式的編譯過程說起
# 上一文我們介紹了windows系統下面程式的分類、編譯器、連接器、常用頭檔、函式庫檔案等知識。本文再談程式的編譯過程。
相信大家都知道原始碼的編譯過程共分為兩個步驟:一是編譯過程,主要工作是把我們的原始碼翻譯成中間文件,這在windows中就是cl.exe的作用,它將我們的.c檔案或 .cpp檔案翻譯成中間.obj檔案;二是連接過程,主要工作是將多種中間檔案、庫檔案連接產生可執行文件,這在windows中就是link.exe的作用,它將##.obj檔案和庫檔案等連結成exe程式。
本文主要教大家擺脫VS的IDE,用命令列的方式用 #cl.exe和link.exe編譯和連結程式。
二 寫我們的Test.c檔案
首先我們新建一個test.txt文件,然後重新命名為text.c#,在該文件中我們填寫如下程式碼:
#include "windows.h" int APIENTRY wWinMain(_In_ HINSTANCE hInstance, _In_opt_ HINSTANCE hPrevInstance, _In_ LPWSTR lpCmdLine, _In_ int nCmdShow) { MessageBox(NULL,"Hello Win32","sdk",MB_ABORTRETRYIGNORE|MB_ICONERROR); return 0; }#include "windows.h"
匯入了我們所需要所有windows系統下必須的頭檔。然後我們引入了windows視窗程式的主函數#wWinMain##。這裡簡單解釋下Winmain各個形參的作用:hInstance是目前程式的實例句柄,也就是目前程式所在的記憶體的位置;hPrevInstance目前程式前一個實例句柄,目前已經廢棄;lpCmdLine是命令列參數,就是我們以命令列的方式執行程式時可以附帶一些字串作為參數;nCmdShow是視窗顯示方式,最大化、最小化那種。我們在主函數中呼叫了MessageBox定義了一個模式對話框,如果編譯成功,我們執行程式後將會彈出一個對話框。
現在Test.c檔案已經寫完成,我們接下來要做的就是分別編譯和連結檔案。
三 編譯Test.c
我們將開啟windows的cmd命令列工具,然後切換到我們目前的工作目錄,使用以下命令編譯Test.c」檔案: Cl.exe /c test.c
#
#
編譯完成後會在工作目錄下產生test.obj中間檔案:
如果你的命令列提示找不到cl.exe命令等諸如此類的信息,相信你應該明白這是環境變數中沒有引入cl.exe所在的目錄,我們可以先加入該環境變數或使用全路徑的方式進行引入。如果你產生了test.obj檔說明編譯過程完成了,我們可以開始連線過程了。
四、連結產生test.exe
# 接下來我們執行下面的指令產生執行檔:
Link.exe test.obj user32.lib
##這個函式庫我們在前一文中曾經提到過,它包含了所欲的使用者介面、訊息相關的API,我們的需要呼叫的MessageBox##就在這個函式庫裡面定義,如果不出意外,你的工作目錄下應該會產生test.exe這個可執行檔:
exe,彈出了我們定義的對話框:
############################# ######### ###### OK####,試驗結束。我們完全脫離了######VS######帶有介面的######IDE#######產生了一個自訂的對話框,是不是很神奇?這裡應該會有小岳岳那賤賤的表情。 。 。 ######### ###
以上是Win32 SDK基礎(二)之關於cl.exe和link.exe編譯和連接程式的詳解(圖)的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

SecLists
SecLists是最終安全測試人員的伙伴。它是一個包含各種類型清單的集合,這些清單在安全評估過程中經常使用,而且都在一個地方。 SecLists透過方便地提供安全測試人員可能需要的所有列表,幫助提高安全測試的效率和生產力。清單類型包括使用者名稱、密碼、URL、模糊測試有效載荷、敏感資料模式、Web shell等等。測試人員只需將此儲存庫拉到新的測試機上,他就可以存取所需的每種類型的清單。

SublimeText3 英文版
推薦:為Win版本,支援程式碼提示!

SublimeText3 Linux新版
SublimeText3 Linux最新版

VSCode Windows 64位元 下載
微軟推出的免費、功能強大的一款IDE編輯器

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)