1. 程式人生 > >14 編譯與連結過程以及MFC靜態/動態連結庫的呼叫

14 編譯與連結過程以及MFC靜態/動態連結庫的呼叫

0 引言

在Windows作業系統中,幾乎所有的內容都是以DLL的形式存在的。例如顯示的字型和圖示儲存在GDI.DLL中;顯示Windows桌面、處理使用者輸入所需要的程式碼唄儲存在User.DLL中;Windows程式設計所需要的大量API函式儲存在Kernel.DLL中。

 

1 編譯連結

程式從原始碼程式設計可執行檔案包括了編譯和連結兩大步。其中,編譯包含預處理,編譯,彙編,生成二進位制可重定位檔案等步驟。連結包含三步,下面將詳細介紹。

(1)預處理:把諸如 #include  、 #define   、 #if - #ifdef - #ifndef- #else - #elif -#endif (條件編譯)等進行預處理,得到完整的原始程式碼。

(2)編譯:對程式碼進行語法詞法分析,必要的時候報錯,提醒使用者修改,得到目的碼,由機器程式碼或者接近於機器語言的程式碼組成,.obj 檔案

(3)彙編:組合語言轉換成我們的計算機可以執行的二進位制可重定位檔案。重定位的含義是給目的碼(.obj檔案)中的函式名,變數名等符號分配爭取的地址等,使得計算機能夠正確執行。

應用程式在編譯連結至執行的過程中,首先以原始碼(.h和.cpp檔案)作為輸入,翻譯產生目標語言(.obj)機器程式等,要從目的碼(.obj)

1 靜態連結庫