第Y章DLL(新).ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第Y章DLL(新)

第Y章 动态链接库 西安国腾天创信息技术有限责任公司 一 动态链接 库(DLL)基本概念 (三)、动态链接库调用方式 二 简单的非MFC 动态链接库 (二)、使用动态链接库 说明3 DLLMain函数 (一)、创建Regular DLL 操作步骤: 1.用AppWizard生成MyDLL动态链接库(DLL)项目文件. 在VisualC++工作平台中,打开File菜单,选择New命令 在New窗口中选择Projects 在左边的列表框中选择MFC AppWizard(dll),在Projects name文本编辑框中输入MyDLL,在Location文本编辑框中输入该文件存放的位置.如图1所示 单击OK按钮,进入MFC AppWizard—Step1 of 1窗口 MFC AppWizard—Step1 of 1窗口中 Regular DLL with MFC statically linked 表示建立一个静态链接的动连接库 Regular DLL using shared MFC DLL 表示建立一个Win32应用程序和MFC应用程序都可调用的动态连接库 MFC Extension DLL(using shared MFC DLL)表示建立一个只有MFC应用程序能够调用的动态连接库. 不改变缺省,如图2. 单击Finish按钮,进入New Project Information窗口 New Project Information窗口显示了前面几步所选择的全部设置,包括生成的动态连接库程序的源代码文件和头文件名,还显示了该应用程序将在哪个路径之中,如图3所示. 单击OK按钮,AppWizard在指定目录下生成动态连接库(DLL)程序所需的全部文件. 2. 在(DLL)中添加对话框资源,添加相应的对话框类CTestDialog. 3.在MyDLL.cpp添加相应的代码: extern C _declspec(dllexport) void Show() { AFX_MANAGE_STATE(AfxGetStaticModuleState()); CTestDialog dlg; dlg.DoModal(); } 操作步骤: 用AppWizard生成一个单文档文件MyTestDLL文件 用ClassVizard为类MyTestDLLView增加单击鼠标右键函数 void CMyTestDLLView::OnRButtonDown(UINT nFlags, CPoint point) 添加代码,如下图所示 拷贝MyDLL文件中Debug目录上的MyDLL.dll文件,粘贴在MyTestDLL文件中,编译测试. (一)、创建Regular DLL (二)、为工程添加头文件 (三)、为工程添加源文件 (四)、为工程添加菜单资源 (五)、使用Extension DLL void CMyTestDLLView::OnRButtonDown(UINT nFlags, CPoint point) { // TODO: Add your message handler code here and/or call default HINSTANCE hMod = NULL; hMod = LoadLibrary(mydll.dll); if(hMod == NULL) { AfxMessageBox(装载mydll.dll动态连接库文件失败); return; } ….. (接上页) typedef void (*TESTDLL)(); TESTDLL lpproc; lpproc = (TESTDLL)GetProcAddress(hMod,Show); lpproc(); FreeLibrary(hMod); CView::OnRButtonDown(nFlags, point); } 四 Extension MFC 动态链接库 创建完成后,可以看到工程中只有一个DllMain()函数, 而且这个函数和非MFC DLL有区别。 static AFX_EXTENSION_MODULE MyExtenDLLDLL = { NULL, NULL }; extern C int APIENTRY DllMain(HINSTANCE hInstance, DWORD dwReason, LPVOID lpReserved) { // Remove this if you use lpReserved UNREFERENCED_PARAMETER(lpReserved); if (dwReason == DLL_PROCESS_A

文档评论(0)

yaocen + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档