使用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) 编译、链接并运行程序。

相关推荐
醉城夜风~1 小时前
手撕 C++ string:从零实现一个简易字符串类
开发语言·c++·算法
nLif1 小时前
进程管道通讯-伪终端方式
c++·windows
颜x小2 小时前
[C#]泛型类与泛型方法
开发语言·c++·c#
Lhan.zzZ2 小时前
深入理解 windeployqt:混合 C++/Qt 项目的打包指南
开发语言·c++·qt
zh路西法3 小时前
【Navigation2进阶】(十二):自主探索性能优化与 RIG 算法推导与 Nav2 插件实现
c++·dijkstra·ros2·rrt·navigation2·前沿探索
星恒随风3 小时前
C++ STL 详解:set 与 multiset 的使用、区间查询和算法应用
开发语言·c++·笔记·学习·算法
再卷也是菜3 小时前
C++11支持并发库
开发语言·c++
六月的翅膀4 小时前
OCR:RapidOCR C++/C#
c++·ocr
颜x小4 小时前
[C#]——接口与继承
开发语言·c++·c#
小肝一下5 小时前
多态(上)
android·开发语言·c++·vscode·多态·面向对象·伊蕾娜