使用MFC DLL

本文仅供学习交流,严禁用于商业用途,如本文涉及侵权请及时联系本人将于及时删除

应用程序与DLL链接后,DLL才能通过应用程序调用运行。应用程序与DLL链接的方式主要有如下两种:隐式链接和显式链接。

隐式链接又称为静态加载,指的是使用DLL的应用程序先链接到编译DLL时生成的导入库LIB文件,执行应用程序的同时操作系统自动加载所需的DLL。在应用程序退出之前,DLL一直存在于该程序运行进程的地址空间中。

显式链接又称为动态加载,使用显式链接DLL的应用程序必须在代码中动态地加载所使用的DLL,并使用指针调用DLL中的导出函数,在使用完毕后,应用程序必须卸载所使用的DLL。

9.3.1 使用隐式链接

使用隐式链接除了需要相应的DLL文件外,还必须具备以下2个文件:
Ø 包含导出函数以及类声明的头文件
Ø DLL 的导入库 LIB 文件
通常情况下,以上各文件是由DLL的开发者提供的。编译时将DLL的LIB文件加入应用程序中,主要有如下2种方法。

(1) 选择"项目"|"添加现有项..."菜单命令,在弹出的"添加现有项"对话框中选择所需的LIB文件;或者是右击项目中的"源文件"文件夹,在快捷菜单中选择"添加"|"现有项..."菜单命令。如图所示。

(2) 在程序的StdAfx.h头文件中加入下列语句。

#pragma comment (lib,"指定的LIB文件名")

9.2节创建了3个动态链接库,由于它们创建导出函数的方法不一样,使用它们时,也略有不同。

【例9.4】创建一个单文档的应用程序MFCImLink,隐式链接例9.1创建的MFCLibraryDll.dll,使用其中的导出函数求正方形的面积。

执行"链接DLL"|"链接MFCLibraryDll"菜单命令,输入数据后,运行效果如图所示。

(1) 使用MFC应用程序向导创建一个基于对话框的应用程序MFCImLink。

(2) 布局对话框资源,并设置控件属性、添加成员变量。

(3) 将例9.1项目中的MFCLibraryDll.h头文件和MFCLibraryDll.lib库文件复制到项目MFCImLink根目录下,并将它们添加到项目中。

(4) 在MFCImLink.cpp文件中添加包含导出函数AreaSquare()声明的头文件语句#include "Regulardll.h",并为计算按钮添加命令消息处理函数。

cpp 复制代码
void CMFCImLinkDlg::OnBnClickedBtnCalu()
{
	// TODO:  在此添加控件通知处理程序代码
	UpdateData();
	m_square = AreaSquare(m_input);
	UpdateData(false);
}

(5) 编译、链接并运行程序。

相关推荐
灰色小旋风几秒前
力扣——第7题(C++)
c++·算法·leetcode
Ralph_Y30 分钟前
C++网络:一
开发语言·网络·c++
程序猿编码1 小时前
探秘 SSL/TLS 服务密码套件检测:原理、实现与核心设计(C/C++代码实现)
c语言·网络·c++·ssl·密码套件
故事和你911 小时前
sdut-程序设计基础Ⅰ-实验二选择结构(1-8)
大数据·开发语言·数据结构·c++·算法·优化·编译原理
像素猎人2 小时前
数据结构之顺序表的插入+删除+查找+修改操作【主函数一步一输出,代码更加清晰直观】
数据结构·c++·算法
蜡笔小马2 小时前
32.Boost.Geometry 空间索引:R-Tree 接口详解
c++·boost·r-tree
想进个大厂2 小时前
代码随想录day63 64 65 66 图论08 09 10 11
c++·算法·图论
Laurence2 小时前
C++ 对象和嵌套对象的创建与销毁
c++···对象·创建·销毁·嵌套对象
小龙报3 小时前
【算法通关指南:算法基础篇】二分算法: 1.A-B 数对 2.烦恼的高考志愿
c语言·开发语言·数据结构·c++·vscode·算法·二分
fqbqrr3 小时前
2603C++,简单实现协程
c++