隨著軟體規模的擴大,要求的功能也是越來越多,開發人員的參與也是越來越多。因此軟體的功能劃分,就成為了現代軟體工程的重大任務,還有軟體開發的並行性也越來越重要。為瞭解決這些問題,大家都會看到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