LoadLibrary函數和FreeLibrary函數

來源:互聯網
上載者:User

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

      執行個體如下:

void TestLoadDLL(void)
{

         HMODULE hDllLib = LoadLibrary(_T("Kernel32.dll"));
         if (hDllLib)
         {
               //擷取動態串連庫裡的函數地址。
               FARPROC fpFun = GetProcAddress(hDllLib,"GetVersion");
              
               //調用函數運行。
               DWORD dwVersion = (*fpFun)();
              
               //擷取WINDOWS的版本。
               DWORD dwWindowsMajorVersion = (DWORD)(LOBYTE(LOWORD(dwVersion)));
               DWORD dwWindowsMinorVersion = (DWORD)(HIBYTE(LOWORD(dwVersion)));
              
               //顯示。
               const int nBufSize = 512;
               TCHAR chBuf[nBufSize];
               ZeroMemory(chBuf,nBufSize);
 
               wsprintf(chBuf,_T("顯示版本:%d,%d/r/n"),
                    dwWindowsMajorVersion,dwWindowsMinorVersion);
               OutputDebugString(chBuf);
 
               //釋放動態串連庫。
               FreeLibrary(hDllLib);
         }

}

 

參考原文:http://dev.firnow.com/course/3_program/vc/vc_js/200853/112374.html

聯繫我們

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