MFC、SDK和API有什麼區別

MFC、SDK和API有什麼區別 編程

MFC Microsoft Foundation Class 微軟函數類庫 數組

SDK (Software Development Kit,軟件開發包) 架構

    軟件開發包一般是一系列API函數,而MFC 是由微軟公司提供的對API封裝後的類庫,所以從這個意義上能夠說MFC是SDK的封裝。另外,mfc中封裝了一套消息處理流程,將sdk中API所有作了封裝,使得開發起來速度加快,而sdk是最底層的函數庫,mfc對它進行了封裝。  框架

    用VC編寫Windows程序有兩種:1. Windwos c方式(SDK),2.C++方式:即對SDK函數進行包裝,如VC的MFC,BCB的OWL等。SDK編程就是直接調用Windows的API進行編程,平時人們常說"用SDK寫程序"就是指用Windows的API函數來寫程序,API由上千個API函數組成(Win95的API有兩千多個)。而MFC是API的封閉,結合面向對象程序設計的繼承性和多態性組成一個個的"類",共由一百多個類組成。儘管MFC比SDK方便,但要深刻VC,直接去學MFC倒是不明智的選擇。只有在熟悉了MFC的運行機制的狀況下,纔有可能深刻下去。因此學VC最好是先學用SDK編寫程序,在此期間深刻掌握Windows操做系統的工做原理和各API函數的應用,而後再深刻MFC.

    SDK是基於C語言的,而MFC是基於C++的,這是最根本的區別。MFC主要封裝的是界面、文件、WinInet和線程等函數。MFC除了封裝API,最重要的是它的體系結構,它所使用的Doc/View結構是SDK中沒有的,這種架構是比較特殊的。儘管Doc/View結構不是微軟的發明,但它是MFC的特點。微軟開發Windows時使用的是C語言,因此最初設計SDK時並無考慮C++。
函數

    MFC是微軟的基本類庫,對不少東西已經進行了封裝,所以使用起來簡單、方便。SDK是採用較通常的C語言,但很靈活。 工具

通常編寫簡單的程序,使用MFC應該能達到要求。但若是編寫功能強大的程序,則使用SDK較多,尤爲是底層的開發。 開發工具

SDK 就是 Software Development Kit 的縮寫,中文意思就是「軟件開發工具包」。這是一個覆蓋面至關普遍的名詞,能夠這麼說:輔助開發某一類軟件的相關文檔、範例和工具的集合均可以叫作「SDK」。咱們後面只討論廣義 SDK 的一個子集——即開發 Windows 平臺下的應用程序所使用的 SDK。  spa

上面只是說了一個 SDK 大概的概念而已,爲了解釋什麼是 SDK ,咱們不得不引入 API、動態連接庫、導入庫等等概念. 操作系統

首先要接觸的是「API」,也就是 Application Programming Interface,其實就是操做系統留給應用程序的一個調用接口,應用程序經過調用操做系統的 API 而使操做系統去執行應用程序的命令(動做)。其實早在 DOS 時代就有 API 的概念,只不過那個時候的 API 是以中斷調用的形式(INT 21h)提供的,在 DOS 下跑的應用程序都直接或間接的經過中斷調用來使用操做系統功能,好比將 AH 置爲 30h 後調用 INT 21h 就能夠獲得 DOS 操做系統的版本號。而在 Windows 中,系統 API 是以函數調用的方式提供的。一樣是取得操做系統的版本號,在 Windows 中你所要作的就是調用 GetVersionEx() 函數。能夠說,DOS API 是「Thinking in 彙編語言」的,而 Windows API 則是「Thinking in 高級語言」的。DOS API 是系統程序的一部分,他們與系統一同被載入內存而且能夠經過中斷矢量表找到他們的入口,那麼 Windows API 呢?要說明白這個問題就不得不引入下面要介紹的這個概念——DLL。  線程

DLL,即 Dynamic Link Library(動態連接庫)。咱們常常會看到一些 .dll 格式的文件,這些文件就是動態連接庫文件,其實也是一種可執行文件格式。跟 .exe 文件不一樣的是,.dll 文件不能直接執行,他們一般由 .exe 在執行時裝入,內含有一些資源以及可執行代碼等。 Windows 的三大模塊就是以 DLL 的形式提供的(Kernel32.dll,User32.dll,GDI32.dll),裏面就含有了 API 函數的執行代碼。爲了使用 DLL 中的 API 函數,咱們必需要有 API 函數的聲明(.H)和其導入庫(.LIB),函數的原型聲明不難理解,那麼導入庫又是作什麼用的呢?咱們能夠這樣理解:導入庫是爲了在 DLL 中找到 API 的入口點而使用的。 

因此,爲了使用 API 函數,咱們就要有跟 API 所對應的 .H 和 .LIB 文件,而 SDK 正是提供了一整套開發 Windows 應用程序所需的相關文件、範例和工具的「工具包」。到此爲止,咱們才真正的解釋清楚了 SDK 的含義。 

因爲 SDK 包含了使用 API 的必需資料,因此人們也常把僅使用 API 來編寫 Windows 應用程序的開發方式叫作「SDK 編程」。而 API 和 SDK 是開發 Windows 應用程序所必需的東西,因此其它編程框架和類庫都是創建在它們之上的,好比 VCL 和 MFC,雖然他們比起「SDK 編程」來有着更高的抽象度,但這絲絕不妨礙它們在須要的時候隨時直接調用 API 函數。

  附帶地,這裏簡單地給出MFC和 API及 SDK三者的關係

    MFC是一個類庫,主要完成對WIN32 API 的封裝,SDK是一個WIN32應用程序開發包,裏面包含了開發WIN32應用程序所需的API聲明,API是微軟提供的WIN32應用程序接口.  簡單說,API是接口,SDK是包含API聲明的開發包,MFC是封裝API的類庫.

相關文章
相關標籤/搜索