- 1、本文档共45页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
调用GetProcAddress()函数获取DLL中导出函数地址 定义一个PROCSUM实例,并调用GetProcAddress()函数获取DLL中导出函数地址的代码如下: ? HINSTANCE hinstLib; hinstLib = LoadLibrary(mylib.dll); PROCSUM ProcSum; ProcSum = (PROCSUM) GetProcAddress(hinstLib, sum); ? 调用导出函数sum()的代码如下: ? (ProcSum) (4, 3) 函数FreeLibrary() 如果不再需要使用DLL模块,则可以调用FreeLibrary() 函数或 FreeLibraryAndExitThread()函数。释放DLL模块,减少DLL模块的引用计数,如果引用计数等于0,则从进程的虚拟地址空间中卸载DLL代码。函数FreeLibrary()的原型如下: BOOL FreeLibrary( HMODULE hLibModule // DLL模块句柄 ); ? 如果函数执行成功,则返回TRUE;否则返回FALSE。 FreeLibraryAndExitThread()函数 FreeLibraryAndExitThread()函数在释放DLL模块后终止调用线程,函数原型如下: ? FARPROC GetProcAddress( HMODULE hModule, // DLL模块句柄 LPCWSTR lpProcName // 导出函数名 ); 【例10.3】 演示如何使用运行时动态链接的方法引用mylib.dll中的导出函数。 在程序中调用mylib.dll中的sum()函数,计算3+4的和,代码如下: ? #include stdafx.h #include windows.h ? typedef int (*PROCSUM)(int,int); int _tmain(int argc, _TCHAR* argv[]) { HINSTANCE hinstLib; MYPROC ProcSum; BOOL fFreeResult; // 加载DLL文件,获取DLL句柄 hinstLib = LoadLibrary(mylib.dll); // 如果句柄有效,则获取函数sum()的地址. if (hinstLib != NULL) { wprintf(LLoadLibrary() is OK!\n); ProcSum = (PROCSUM) GetProcAddress(hinstLib, sum); 接上 // If the function address is valid, call the function. if (ProcSum != NULL) { printf(GetProcAddress() is OK!\n); printf(4+3 = %d\n, (ProcSum) (4, 3)); ; } else printf(GetProcAddress() failed, error %d\n, GetLastError()); // Free the DLL module. fFreeResult = FreeLibrary(hinstLib); } else printf(LoadLibrary() failed, error %d\n, GetLastError()); system(Pause); return 0; } 【例10.3】的运行结果 10.3.3 搜索DLL文件的次序 1.标准搜索次序 2.替代搜索次序 1.标准搜索次序 系统使用的DLL搜索次序取决于是否启用安全DLL搜索模式。默认情况下,安全DLL搜索模式是启用的。如果要禁用安全DLL搜索模式,则可以打开注册表编辑器,在HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager键下创建一个DWORD值SafeDllSearchMode,并将其设置为0,如图10.10所示。 SetDllDirectory()函数 调用SetDllDirectory()函数可以禁用安全DLL搜索模式,并指定搜索DLL文件的路径,函数原型如下: ? BOOL W
您可能关注的文档
- Windows Sever 2008网络管理与应用 教学课件 作者 刘瑞新 胡国胜 第3章.ppt
- Windows Sever 2008网络管理与应用 教学课件 作者 刘瑞新 胡国胜 第4章.ppt
- Windows Sever 2008网络管理与应用 教学课件 作者 刘瑞新 胡国胜 第5章.ppt
- Windows Sever 2008网络管理与应用 教学课件 作者 刘瑞新 胡国胜 第6章.ppt
- Windows Sever 2008网络管理与应用 教学课件 作者 刘瑞新 胡国胜 第8章.ppt
- Windows Sever 2008网络管理与应用 教学课件 作者 刘瑞新 胡国胜 第9章.ppt
- Windows Sever 2008网络管理与应用 教学课件 作者 刘瑞新 胡国胜 第10章Web服务器的架设.ppt
- Windows Sever 2008网络管理与应用 教学课件 作者 刘瑞新 胡国胜 第11章 FTP服务器的架设.ppt
- Windows XP 操作应用基础 项目教学 教学课件 杨速章 陈静 项目六 系 统 维 护.ppt
- Windows XP 操作应用基础 项目教学 教学课件 杨速章 陈静 项目三 掌握Windows XP的文件系统.ppt
- paincognitive impairment rat model of neuropathic神性疼痛大鼠模型中认知障碍.pdf
- 01制作工具集图库.pdf
- 国产全系列三星全部产品规格.pdf
- 资料课件级初二ph 10 q 17.pdf
- 钢铁侠咸鱼合集.pdf
- 2024年人教版七年级上册英语期末复习语法专项.pptx
- utputik取决于rowf hatsmatrix multiplication in mapreduce中矩阵乘法.pdf
- 人教版最实用小学语文阅读题答题技巧课件PPT.ppt
- 文案详解mentor graphics软件.pdf
- 参考教程ma kr 7机器人6f 11e7 a5a4 data.pdf
文档评论(0)