- 3
- 0
- 约8.39千字
- 约 42页
- 2017-07-16 发布于北京
- 举报
动态链接库的显式调用 1 装入动态链接库 2 取得函数地址 3 调用动态链接库的实例 1.装入动态链接库 在显式使用动态链接库之前,必须先把动态链接库装入内存,该操作主要靠函数LoadLibrary()来实现。 下面是该函数的原型说明。 HMODULE LoadLibrary( LPCTSTR lpFileName // 动态链接库文件的名称 ); 当应用程序试图把lpFileName所指向的动态链接库装入内存时,会先从系统中查找,如果这个动态链接库已经在内存中,则系统会增加这个动态链接库的使用计数,并返回这个动态链接库的句柄。如果不在内存中,则系统会先查找该文件,如果没有文件的路径,则在当前目录或在系统目录中查找,并把该文件装入内存,最后返回该动态链接库的句柄。 2取得函数地址 一个动态链接库中可以包含多个导出函数,当通过调用LoadLibrary()取得指定动态链接库模块的句柄,要想使用该模块中的某个函数,首先必须取通过GetProcAddress取得该函数的地址。 FARPROC GetProcAddress( HMODULE hModule, //动态链接库的句柄 LPCSTR lpProcName //导出函数的名称 ); 该函数将hModule所指的动态链接库中的lpProcName所指定的函数装入内存。当取得函数的地址后,就可以使用该函数,使用完后,调用FreeLibrary()释放动态链接库。 范例: 1.打开VS2010,依次选择文件—新建—项目—MFC DLL,在下方名称栏中输入工程命名OneDLL,在位置栏中选择存放工程文件的路径—确定—点击下一步—DLL类型:使用共享 MFC DLL 的规则 DLL—点击完成。 其中我们感兴趣的是OneDLL.cpp文件和OneDLL. def文件。 OneDLL.cpp文件是DLL的主要的源代码文件,它包含了COneDLLApp类的定义; OneDLL.def文件包含了DLL提供的关于DLL在Wind ows下运行的一些信息,在这个文件中定义了一些参数,如DLL的名称和属性等,还声明了从DLL中输出的函数。 2添加实现代码,黑色加粗部分为添加的代码。 #include stdafx.h #include OneDLL.h #ifdef _DEBUG #define new DEBUG_NEW #endif int Message(void); BEGIN_MESSAGE_MAP(COneDLLApp, CWinApp) ………………………………….. int Message(void) { MessageBox(NULL,_T(This is the example of testing DLL.),NULL,MB_OKCANCEL); return 1; } ? 记得设为为多字节而非unicode编码。 3修改.def文件: OneDLL.def : 声明 DLL 的模块参数。 ? LIBRARY OneDLL EXPORTS Message? ; 此处可以是显式导出 ? 4.点击生成——生成解决方案,可以生成相关的lib文件和dll文件,在OneDLL\Debug进行查看生成的文件。 5新建调用DLL(OneDLL)的MFC工程。 新建一个基于MFC框架的单文档工程TestDLL,并在TestDLLView.cpp文件开始处添加 HINSTANCE handlerDLL=NULL; //创建dll句柄?? typedef int(* MESSAGE)(void); ?//声明函数指针 MESSAGE Message; ? 然后在菜单中添加DLL主菜单、子菜单,如下图所示,以及View类下的菜单响应函数。子菜单ID分别为IDDLLLOAD和IDDLLTEST 在loaddll菜单项添加以下代码: if(handlerDLL!=NULL) { MessageBox( _T(The OneDLL.DLL has been loaded.) ); return; } ? handlerDLL=LoadLibrary( _T(OneDLL.DLL) ); ? if(handlerDLL==NULL) { MessageBox( _T(Cannot Load the OneDLL.DLL) ); } else { MessageBox( _T(Load the OneDLL.DLL successful!) );} ? Message=(MESSAGE)GetProcAddre
您可能关注的文档
- 第九讲“驯服飓风”的哲学反思(下)——真理与价值.ppt
- 第九讲《红楼梦·林黛玉葬花》.ppt
- 第九讲东亚季风与冷涌.ppt
- 第九讲中华精神9.ppt
- 第九讲中国民间鬼故事.ppt
- 第九讲中晚唐国文.ppt
- 第九讲人力资源经济分析与社会分析.ppt
- 第九讲信息检索与论文写作201511.ppt
- 第九讲健康与发展.ppt
- 第九讲光照明模型.pptx
- 广东省广州省实验中学教育集团2025-2026学年八年级上学期期中考试物理试题(解析版).docx
- 广东省广州大学附属中学2025-2026学年八年级上学期奥班期中物理试题(解析版).docx
- 广东省广州市第八十六中学2025-2026学年八年级上学期期中物理试题(含答案).docx
- 广东省广州市第八十九中学2025-2026学年八年级上学期期中考试物理试题(解析版).docx
- 广东省广州市第二中学2025-2026学年八年级上学期期中考试物理试题(含答案).docx
- 广东省广州市第八十六中学2025-2026学年八年级上学期期中物理试题(解析版).docx
- 广东省广州市第八十九中学2025-2026学年八年级上学期期中考试物理试题(含答案).docx
- 广东省广州市第二中学2025-2026学年八年级上学期期中考试物理试题(解析版).docx
- 2026《中国人寿上海分公司营销员培训体系优化研究》18000字.docx
- 《生物探究性实验教学》中小学教师资格模拟试题.docx
最近下载
- 2025年寒假作业九年级化学人教版答案.pdf VIP
- 李子奈计量经济学(第五版)-第一章-绪论.pptx VIP
- 第21讲 相似三角形及其应用(练习)(教师版)-2025年中考数学一轮复习讲练测.docx VIP
- 信息安全管理手册.doc VIP
- 2026年高考数学二轮复习突破:立体几何与空间向量之球的切接问题.pdf VIP
- 2026年高考数学二轮复习突破:立体几何与空间向量之空间向量与空间角.pdf VIP
- 2026年养老院营销策划方案.docx VIP
- 博雅教育理念与钢琴教育融合思考.doc VIP
- 部编人教版五年级语文下册全册教案(表格版).pdf VIP
- 《数据采集与预处理》教学教案(全).doc VIP
原创力文档

文档评论(0)