Windows API一日一練(82)LoadLibrary函數

來源:互聯網
上載者:User
  Windows API一日一練(82)LoadLibrary函數

隨著軟體規模的擴大,要求的功能也是越來越多,開發人員的參與也是越來越多。因此軟體的功能劃分,就成為了現代軟體工程的重大任務,還有軟體開發的並行性也越來越重要。為瞭解決這些問題,大家都會看到IT硬體發展非常迅速,功能也越來越複雜,但硬體中發展明顯提高在於採用IC的方式來實現複雜的功能,也就是把大部份功能整合到一起,只要給出一些引腳就可以實現產品了。而軟體中有沒有相同於硬體中的IC呢?我想是應有的,就是動態串連庫了。在Windows這座大廈裡,很多基石就是動態串連庫構成的。一個動態串連庫就封裝了特別複雜的功能,使用者不必關心它是怎麼樣實現的。當然,這樣也可以讓不同的開發人員同時開發產品,提高軟體開發的速度。要使用動態串連庫裡的函數,就需要使用LoadLibrary函數來載入動態串連庫,使用函數GetProcAddress來擷取功能函數的地址。

函數LoadLibrary聲明如下:

WINBASEAPI
__out
HMODULE
WINAPI
LoadLibraryA(
    __in LPCSTR lpLibFileName
    );
WINBASEAPI
__out
HMODULE
WINAPI
LoadLibraryW(
    __in LPCWSTR lpLibFileName
    );
#ifdef UNICODE
#define LoadLibrary LoadLibraryW
#else
#define LoadLibrary LoadLibraryA
#endif // !UNICODE

lpLibFileName是動態串連庫的名稱。

調用函數的例子如下:
#001 //載入動態串連庫。
#002  //蔡軍生 2007/12/03 QQ:9073204 深圳
#003  void TestLoadDLL(void)
#004  {
#005        //載入動態串連庫。
#006        HMODULE hDllLib = LoadLibrary(_T("Kernel32.dll"));
#007        if (hDllLib)
#008        {
#009              //擷取動態串連庫裡的函數地址。
#010              FARPROC fpFun = GetProcAddress(hDllLib,"GetVersion");
#011             
#012              //調用函數運行。
#013              DWORD dwVersion = (*fpFun)();
#014             
#015              //擷取WINDOWS的版本。
#016              DWORD dwWindowsMajorVersion = (DWORD)(LOBYTE(LOWORD(dwVersion)));
#017              DWORD dwWindowsMinorVersion = (DWORD)(HIBYTE(LOWORD(dwVersion)));
#018             
#019              //顯示。
#020              const int nBufSize = 512;
#021              TCHAR chBuf[nBufSize];
#022              ZeroMemory(chBuf,nBufSize);
#023
#024              wsprintf(chBuf,_T("顯示版本:%d,%d/r/n"),
#025                    dwWindowsMajorVersion,dwWindowsMinorVersion);
#026              OutputDebugString(chBuf);
#027
#028              //釋放動態串連庫。
#029              FreeLibrary(hDllLib);
#030        }
#031       
#032  }

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.