随着软件Software规模扩大要求功能也是越来越多开发人员参和也是越来越多因此软件Software功能划分就成为了现代软件Software工程重大任务还有软件Software开发并行性也越来越重要为了解决这些问题大家都会看到IT硬件发展非常迅速功能也越来越复杂但硬件中发展明显提高在于采用IC方式来实现复杂功能也就是把大部份功能集成到起只要给出些引脚就可以实现产品了而软件Software中有没有相同于硬件中IC呢?我想是应有就是动态连接库了在Windows这座大厦里很多基石就是动态连接库构成个动态连接库就封装了特别复杂功能使用者不必关心它是如何样实现当然这样也可以让区别开发者同时开发产品提高软件Software开发速度要使用动态连接库里就需要使用LoadLibrary来加载动态连接库使用GetProcAddress来获取功能地址
LoadLibrary声明如下:
WINBASEAPI
__out
HMODULE
WINAPI
LoadLibraryA(
__in LPCSTR lpLibFileName
);
WINBASEAPI
__out
HMODULE
WINAPI
LoadLibraryW(
__in LPCWSTR lpLibFileName
);
#def UNICODE
# LoadLibrary LoadLibraryW
#
# LoadLibrary LoadLibraryA
#end // !UNICODE
lpLibFileName是动态连接库名称
例子如下:
#001 //加载动态连接库
#002 //蔡军生 2007/12/03 qq:9073204 深圳
#003 void TestLoadDLL(void)
#004 {
#005 //加载动态连接库
#006 HMODULE hDllLib = LoadLibrary(_T("Kernel32.dll"));
#007 (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 nBufSize = 512;
#021 TCHAR chBuf[nBufSize];
#022 ZeroMemory(chBuf,nBufSize);
#023
#024 wsprf(chBuf,_T("显示版本:%d,%d\r\n"),
#025 dwWindowsMajorVersion,dwWindowsMinorVersion);
#026 OutputDebugString(chBuf);
#027
#028 //释放动态连接库
#029 FreeLibrary(hDllLib);
#030 }
#031
#032 }
最新评论