搜尋
首頁運維windows維Win32 SDK基礎(二)之關於cl.exe和link.exe編譯和連接程式的詳解(圖)

從程式的編譯過程說起

#    上一文我們介紹了windows系統下面程式的分類、編譯器、連接器、常用頭檔、函式庫檔案等知識。本文再談程式的編譯過程。

相信大家都知道原始碼的編譯過程共分為兩個步驟:一是編譯過程,主要工作是把我們的原始碼翻譯成中間文件,這在windows中就是cl.exe的作用,它將我們的.c檔案或 .cpp檔案翻譯成中間.obj檔案;二是連接過程,主要工作是將多種中間檔案、庫檔案連接產生可執行文件,這在windows中就是link.exe的作用,它將##.obj檔案和庫檔案等連結成exe程式。

本文主要教大家擺脫VSIDE,用命令列的方式用 #cl.exelink.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

    我們將開啟

windowscmd命令列工具,然後切換到我們目前的工作目錄,使用以下命令編譯Test.c」檔案:        Cl.exe /c test.c

#

    編譯完成後會在工作目錄下產生test.obj中間檔案:

    如果你的命令列提示找不到cl.exe命令等諸如此類的信息,相信你應該明白這是環境變數中沒有引入cl.exe所在的目錄,我們可以先加入該環境變數或使用全路徑的方式進行引入。如果你產生了test.obj檔說明編譯過程完成了,我們可以開始連線過程了。

四、連結產生test.exe

#    接下來我們執行下面的指令產生執行檔:

    Link.exe test.obj user32.lib

## 

 

        User32.lib

這個函式庫我們在前一文中曾經提到過,它包含了所欲的使用者介面、訊息相關的API,我們的需要呼叫的MessageBox##就在這個函式庫裡面定義,如果不出意外,你的工作目錄下應該會產生test.exe這個可執行檔:


    雙擊這個

exe,彈出了我們定義的對話框:


############################# ######### ######        OK####,試驗結束。我們完全脫離了######VS######帶有介面的######IDE#######產生了一個自訂的對話框,是不是很神奇?這裡應該會有小岳岳那賤賤的表情。 。 。 ######### ###

以上是Win32 SDK基礎(二)之關於cl.exe和link.exe編譯和連接程式的詳解(圖)的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

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

熱門文章

熱工具

SecLists

SecLists

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

SublimeText3 英文版

SublimeText3 英文版

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

SublimeText3 Linux新版

SublimeText3 Linux新版

SublimeText3 Linux最新版

VSCode Windows 64位元 下載

VSCode Windows 64位元 下載

微軟推出的免費、功能強大的一款IDE編輯器

SublimeText3 Mac版

SublimeText3 Mac版

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