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

相关推荐
小小龙学IT5 分钟前
Qt QPainter 2D 绘图系统深度解析:从画笔到渲染引擎适
c++·qt
wabs66612 分钟前
关于二叉树【力扣100.相同的树的思考】
数据结构·c++·算法·leetcode·二叉树·递归法
小小龙学IT27 分钟前
Boost.PFR 开源结构体字段反射库深度解析
c++·开源
程序猿编码30 分钟前
零依赖纯手写:C++ 实现完整神经网络,张量反向传播全打通
c++·神经网络·transformer·大模型推理
码匠许师傅31 分钟前
【C++三方组件】utfcpp:UTF-8 字符串处理避坑
c++
蒸蒸yyyyzwd1 小时前
八股学习 MVCC 慢查询优化和 read 过程
c++·八股
APEX真好玩1 小时前
把高频传感器(IMU)数据封装进 MP4:FFmpeg 私有数据轨实践
c++
晴天的雨.9921 小时前
[C++算法]盛最多水的容器(双指针算法)
开发语言·c++·算法
布莱克6051 小时前
理解内存泄漏:成因、发现方法与解决策略(C++ 举例)
c语言·c++·内存泄漏
此生决int2 小时前
深入理解C++系列(19)——C++11(上)
开发语言·c++