Visual C++程式設計中的API和SDK)

來源:互聯網
上載者:User
本文關鍵詞: Visual C++ 程式設計 API SDK

我們在編寫標準C程式的時候,經常會調用各種庫函數來輔助完成某些功能;初學者使用得最多的C庫函數就是printf了,這些庫函數是由你所使用的編譯器廠商提供的。在Windows平台下,也有類似的函數可供調用;不同的是,這些函數是由Windows作業系統本身提供的。

Windows作業系統提供了各種各樣的函數,以方便我們開發Windows應用程式。這些函數是Windows作業系統提供給應用程式編程的介面
(Application Programming
Interface),簡稱為API函數。我們在編寫Windows程式時所說的API函數,就是指系統提供的函數,所有主要的Windows函數都在
Windows.h標頭檔中進行了聲明。

Windows作業系統提供了1000多種API函數,作為開發人員,要全部記住這些函數調
用的文法幾乎是不可能的。那麼我們如何才能更好地去使用和掌握這些函數呢?微軟提供的API函數大多是有意義的單詞的組合,每個單詞的首字母大寫,例如
CreateWindow,讀者從函數的名字上就可以猜到,這個函數是用來為程式建立一個視窗的。其他的,例如,ShowWindow(用於顯示視窗),
LoadIcon(用於載入表徵圖),SendMessage(用於發送訊息)等,這些函數的準確拼字與調用文法都可以在MSDN中尋找到。

你可以把MSDN理解為微軟向開發人員提供的一套協助系統,其中包含大量的開發文檔、技術文章和範例程式碼。MSDN包含的資訊非常全面,程式員不但可以
利用MSDN來輔助開發,還可以利用MSDN來進行學習,從而提高自己。對於初學者來說,學會使用MSDN並從中汲取知識,是必須要掌握的技能。

我們在程式開發過程中,沒有必要去死記硬背函數的調用文法和參數資訊,只要能快速地從MSDN中找到所需的資訊就可以了,等使用的次數多了,這些函數自然也就記住了。

我們經常聽人說Win32 SDK開發,那麼什麼是SDK呢。SDK的全稱是Software Development
Kit,中文譯為軟體開發包。假如現在我們要開發話務中心,在購買語音卡的同時,廠商就會提供語音卡的SDK開發包,以方便我們對語音卡的編程操作。這個
開發包通常都會包含語音卡的API函數庫、協助文檔、使用手冊、協助工具輔助等資源。也就是說,SDK實際上就是開發所需資源的一個集合。現在讀者應該明白
Win32 SDK的含義了吧,即Windows 32位平台下的軟體開發包,包括了API函數、協助文檔、微軟提供的一些輔助開發工具。

提示:API和SDK是一種廣泛使用的專業術語,並沒有專指某一種特定的API和SDK,例如,語音卡API、語音卡SDK、Java API、Java SDK等。

查看本文來源

經常會在技術論壇裡面看到類似這樣的文章:“什麼是 SDK?”,“請高手講一下 SDK 是什麼東東?”……

    其實很簡單,SDK 就是 Software Development Kit
的縮寫,中文意思就是“軟體開發套件”。這是一個覆蓋面相當廣泛的名詞,可以這麼說:輔助開發某一類軟體的相關文檔、範例和工具的集合都可以叫做
“SDK”。具體到我們這個系列教程,我們後面只討論廣義 SDK 的一個子集——即開發 Windows 平台下的應用程式所使用的 SDK。

    呵呵,其實上面只是說了一個 SDK 大概的概念而已,理解什麼是 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(又是一個縮寫,感覺 IT 這個行業裡三字頭縮寫特別多),即 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 函數。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.