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

相关推荐
犹怜草木青11 分钟前
const关键字
c++
liuyao_xianhui16 分钟前
map和set_C++
java·开发语言·数据结构·c++·算法·宽度优先
香蕉鼠片20 分钟前
八股C++
开发语言·c++
feng_you_ying_li21 分钟前
C++之智能指针的介绍与实现
c++
墨^O^23 分钟前
C++ Memory Order 完全指南:从 relaxed 到 seq_cst,深入理解无锁编程与 happens-before
linux·开发语言·c++·笔记·学习·算法·缓存
6Hzlia34 分钟前
【Hot 100 刷题计划】 LeetCode 51. N 皇后 | C++ 回溯算法&状态数组
c++·算法·leetcode
脱氧核糖核酸__1 小时前
LeetCode热题100——41.缺失的第一个正数(题解+答案+要点)
数据结构·c++·算法·leetcode·哈希算法
脱氧核糖核酸__1 小时前
LeetCode热题100——73.矩阵置零(题目+题解+答案)
c++·算法·leetcode·矩阵
智者知已应修善业1 小时前
【51单片机数码管+蜂鸣器的使用】2023-6-14
c++·经验分享·笔记·算法·51单片机
艾莉丝努力练剑1 小时前
【Linux线程】Linux系统多线程(七):<线程同步与互斥>线程同步(下)
java·linux·运维·服务器·c++·学习·操作系统