您好,欢迎访问三七文档
当前位置:首页 > IT计算机/网络 > 数据库 > C++ 编程 第十八章 动态链接库
联系方式:北京源智天下科技有限公司第十八讲:动态链接库杨章伟e-mail:yang505412@163.com1-2北京源智天下科技有限公司联系方式:课程内容安排•第一个例子•动态链接库概述•Win32DLL的创建和使用•MFC规则DLL的创建•综合练习•思考和习题1-3北京源智天下科技有限公司联系方式:第一个例子•DLL(DynamicLinkLibrary),即动态链接库。在Windows中,许多应用程序并不是一个完整的可执行文件,它们被分割成一些相对独立的动态链接库即DLL文件,放置于系统中。当用户执行某一个程序时,相应的DLL文件就会被调用。读者可以简单的把DLL看成一种仓库,其提供给读者一些可以直接使用的变量、函数或类。•创建第一个DLL。该范例创建一个简单的DLL工程,其实现两个整数相加的功能1-4北京源智天下科技有限公司联系方式:北京源智天下科技有限公司联系方式:的概念,还有过静态链接库的概念。静态链接库与动态链接库都是共享代码的方式。其区别在于以下两个方面。静态链接库文件中的指令都被直接包含在最终生成的可执行文件中。而动态链接库则不必被包含在可执行文件中。可执行文件执行时可以动态地引用和卸载这个与可执行文件相对独立的动态链接库文件。静态链接库中不能再包含其他的动态链接库或者静态库,而在动态链接库中还可以再包含其他的动态或静态链接库。1-6北京源智天下科技有限公司联系方式:也提供了建立静态链接库的功能。读者可单击【File】|【New】命令。新建一个【Win32StaticLibrary】工程,即可建立静态链接库工程,如图18-7所示。1-7北京源智天下科技有限公司联系方式:运行与查看动态链接库库文件不能单独执行,因而在按下F5(开始debug模式执行)或【CTRL+F5】(运行)执行时,弹出对话框,如图18-8所示。要求用户输入可执行文件的路径来启动库函数的执行。此时读者可以输入要调用该库的可执行文件EXE文件的路径就可以对库进行调试了。其调试技巧与一般应用工程的调试一样。1-8北京源智天下科技有限公司联系方式:查看动态链接库的方式很简单。VisualC++6.0提供了Depends工具用于查看DLL文件的详细情况。在VisualC++6.0的菜单下打开该工具,如图18-9所示。1-9北京源智天下科技有限公司联系方式:例如,用上述Depends工具打开系统目录中的user32.dll,如下图18-10所示。红圈内的就是几个版本的MessageBox。1-10北京源智天下科技有限公司联系方式:的创建和使用•一般来说,VisualC++支持三种形式的DLL:非MFC动态库(Win32DLL)、MFC规则DLL和MFC扩展DLL。其中,非MFC动态库不采用MFC类库结构,MFC规则DLL内部虽然可以使用MFC,但是其与应用程序的接口不能是MFC。MFC扩展DLL与应用程序的接口可以是MFC,可以从MFC扩展DLL中导出一个MFC类的派生类。•Win32DLL的创建非常简单。本章18.1节的第一个例子就是一个典型的Win32动态链接库文件的创建。•创建DLL后,就应该在具体的应用程序中调用。VisualC++中调用DLL的方式有两种:静态调用和动态调用。1-11北京源智天下科技有限公司联系方式:相似的,MFC规则DLL也不是MFC应用程序,其所继承自CWinApp的类不包含消息循环。MFC规则DLL与MFC应用程序中一样,需要将所有DLL中元素的初始化放到InitInstance()函数中。读者可以在VisualC++中设置MFC规则DLL是静态链接到MFCDLL还是动态链接到MFCDLL。单击【Project】|【Setting】|【General】命令,打开【MicrosoftFoundationClasses】对话框。在该对话框中进行设置,如图18-12所示。1-12北京源智天下科技有限公司联系方式:北京源智天下科技有限公司联系方式:,新建MFCDLL工程。单击【File】|【New】命令,打开新建工程对话框。在其中选择【MFCAppWizard(dll)】项,单击其中的【OK】按钮后如图18-13所示。1-14北京源智天下科技有限公司联系方式:北京源智天下科技有限公司联系方式:综合练习•实例通过MFCAppWizard创建一个对话框程序。在其中添加一个命令按钮(名称为“调用DLL程序”)。单击该按钮后可以调用DLL程序。该DLL程序也包涵一个对话框,其中显示“MYMFCDLL”字样。1-16北京源智天下科技有限公司联系方式:思考和习题•如何显式加载和卸载动态链接库?•VisualC++中如何创建一个动态链接库?其具体步骤主要有哪些?•如何理解Win32DLL?其具体的应用范围是什么?•如何创建Win32DLL?创建完成后如何在使用中调用?•如何理解MFC规则DLL?其具体的应用范围是什么?•如何创建MFC规则DLL?创建完成后如何在使用中调用?
本文标题:C++ 编程 第十八章 动态链接库
链接地址:https://www.777doc.com/doc-3545785 .html