MFC dll编程与加载

AI权益加码!Claude Code、Cursor等20+工具免费用! 购周边限时加赠Coding Plan Lite,畅享主流AI工具!学习进阶更高效! 阅读详情

在VS2003以上版本,在建立工程的时候,就可以添加是否要加载dll文件,但是工程添加后,MFC的dll文件是不好添加的。有关DLL的编程以及加载,一直都没有一个简单的,合适的方案,比如我想往DLL的函数接口中传入参数,我想让DLL中也能拥有界面,比如对话框等。我在这里,经过自己的经验,给大家提出一种快速,简单的DLL开发方案。

DLL分为普通DLL,和MFC拓展DLL,普通DLL可以使用在其他环境中,比如VB,C++ Builder等。MFC拓展DLL是将一个MFC类,或者其他类作为一个输出,导出的是类接口,所以只能用在MFC程序中,所以,从通用性上,我们使用普通DLL类更合适。

首先我们讲怎么加载DLL:

假设我们有一个按钮响应函数OnButton1(),点击按钮后,加载指定目录下的DLL,默认为当前工程路径。

   void CDllTest1Dlg::OnButton1() 
{
HINSTANCE hInstance;//声明一个实例,用于保存DLL的句柄
hInstance = ::LoadLibrary("PDO_DLL.dll");//加载DLL
if(hInstance == NULL)
{
AfxMessageBox("加载PDO_DLL.dll出错");
}

外部动态链接库dll文件导入mfc工程 需要导入文件为:xxx.dll文件、xxx.lib文件xxx.h文件 1.将xxx.dll文件放在项目的Debug目录下面(随exe文件同目录位置) 2.将xxx.lib文件xxx.h文件放在项目的文件目录下(项目的.h文件放在同一目录下) 3.下面就需要把三个文件添加到项目中(也就是告知项目文件所在路径),其中xxx.dll文件添加到Debug目录下,项目会在使用时自动读取,无需额外操作。 4.在项目中把xxx.h文件包含进来:选择解决方案资源管理器,右键头文件,选择添加现有项,添加进来 阅读详情

相关推荐

MFC学习记录001——VS2019MFC创建并调用DLL(初学者详细步骤)

(又是一个写了大半天才编译通过,并且达到预期效果的项目,这里做个记录,以免忘记,PS:好像没办法把创建调用写在一个章节,图片太多了,放不下了好像) 一、创建"MFC动态链接库"项目 二、项目名称设置为“Test001Dll"——>选择好项目存放的位置——>“使用共享 MFC DLL的常规 DLL” 这时候可以看到自动生成了这些文件: 三、项目右击——>“添加”——>“新建项”——>选择“MFC类”——>类名设置为“Test001Dialog” 基类设置为“CDi

SYW的博客 8725

VC++6.0MFC实现DLL文件注入系统计算器

测试部分:采用VC++6.0编译器,通过创建远程线程方式实现dll注入。 DLL文件部分:实现系统计算器添加菜单。 测试程序dll文件部分编译通过并且正常运行出结果。

使用MFC DLL创建对话框的详细教程

MFC,即Microsoft Foundation Classes,是一个用于简化Windows应用程序开发的C++类库。自1992年由Microsoft推出以来,MFC已经成为Windows下开发桌面企业级应用的首选工具之一。它封装了Windows API的复杂性,提供了一系列面向对象的编程接口,使得开发者能够更专注于业务逻辑的实现。动态链接库(Dynamic Link Library,简称DLL)是一种在操作系统中实现共享函数库概念的文件格式。

weixin_35728286的博客 1102

MFC创建、调用Dll的方法

MFC创建、调用Dll的方法

xujianjun229的博客 5211

MFC动态调用2种不同的QT DLL

MFC中写法: 1、调用DLL接口类 ,下列代码不是完整的,但是功能能满足 xxx.h HMODULE m_hDLL; // 加载DLL bool LoadDll(char* strDLLFileName); // 实例化接口 int CreateInstance(int argc, char *argv[]); //启动QT主线程,阻塞 int StartCoreApplication(); //获得QT DLL中实例化的类 void* GetInstanc...

小西2016的博客 2377

MFCDLL/lib的调用

1、简介: dll.lib都是程序集合,便于代码重用。都是二进制的文件。 .dll也叫动态链接库,程序链接的方式为运行时链接(run-time linked),为PE(portable executable)格式,也就是程完整的程序。.exe、.dll、.fon、.mod、.drv、.ocx等等都是动态链接库。如.exe为系统调用的函数集合。.dll不存在同名引用,且有导出表,

Kelvin_Yan的专栏 1358

[Qt学习笔记]Qt使用MFC编译生成dll库在无编程环境电脑出现无法加载dll的问题

在项目实践中,使用Qt调用了一个vs创建的dll库,在本机上编译release后的exe可以加载对应的dll文件,将exe拷贝到有vs编程环境的电脑上也可以加载对应的dll文件,但在无编程环境的电脑上执行exe就会出现无法加载dll的bug。这里重新学习一下MFC这种生成dll设定运行库的原理。编译选项包含静态链接的lib说明/MD_MT、_DLLMSVCRT.lib多线程、Release、DLL版本的运行时库/MDd多线程、Debug、DLL版本的运行时库/MT_MT。

fengyaowuhui的博客 583

VC++动态链接库(DLL)编程(四)――MFC扩展 DLL

VC++动态链接库(DLL)编程(四)――MFC扩展 DLL作者:宋宝华  e-mail:21cnbao@21cn.com 前文我们对非MFC DLLMFC规则DLL进行了介绍,现在开始详细分析DLL的最后一种类型――MFC扩展DLL。 6.1概论MFC扩展DLLMFC规则DLL的相同点在于在两种DLL的内部都可以使用MFC类库,其不同点在于MFC扩展DLL应用程序的接口可以是MFC的。MF...

weixin_33889245的博客 99

c语言添加mfc头文件,MFC(动态链接库编程,孙鑫C++第十九讲札记整理)

MFC(动态链接库编程,孙鑫C++第十九讲笔记整理)1.DLL简介,动态库,静态库。动态库节约磁盘空间,静态库体积大。可以用多种语言编写DLL文件。动态库有两种加载方式:隐式调用动态加裁!2.新建一个DLL1的dll工程,加入一源文件名为dll1.cpp,加入addsubtract两个函数,注意此时须在函数名前加_declspec(dllexport),并且编译。用dumpbi-exports...

weixin_39667041的博客 1231

Windows DLL编程实践指南

在程序中使用DLL时,需要根据具体的应用场景性能需求选择合适的加载机制。隐式链接简单易用,适合于依赖关系固定的场景;显式链接提供了更高的灵活性控制力,适合于插件系统或模块化的应用程序。调用DLL中的函数涉及到函数地址的获取,这需要使用函数。同时,需要注意调用约定的一致性,避免因参数传递不一致导致的错误。理解并合理利用DLL加载函数调用机制,对于开发高效、稳定、可扩展的应用程序至关重要。Win32 DLL是基于Windows操作系统的32位动态链接库,它是最常见的DLL类型之一。

weixin_42181686的博客 1291

重要:VC DLL编程

VC DLL编程 静态链接:每个应用程序使用函数库,必须拥有一份库的备份。多个应用程序运行时,内存中就有多份函数库代码的备份。 动态连接库:多个应用程序可以共享一份函数库的备份。 DLL的调用方式:即DLL的使用者在调用库中输出函数时,函数参数的压栈出栈顺序方法。 VC++支持四种方式: <1>_cdecl调用方式: 也叫C调用方式,函数参数的压栈顺序...

aolan7349的博客 119

MFCDLL

MFCDLL   一般的,在介绍Windows编程的书中讲述DLL的有关知识较多,而介绍MFC的书则比较少地提到。即使使用MFC编写动态链接库,对于初步接触DLL的程序员来说,了解DLL的背景知识是必要的。另外,MFC提供了新的手段来帮助编写DLL程序。所以,本节先简洁的介绍有关概念。 DLL的背景

738

MFC教程-7

 MFCDLL 一般的,在介绍Windows编程的书中讲述DLL的有关知识较多,而介绍MFC的书则比较少地提到。即使使用MFC编写动态链接库,对于初步接触DLL 的程序员来说,了解DLL的背景知识是必要的。另外,MFC提供了新的手段来帮助编写DLL程序。所以,本节先简洁的介绍有关概念。DLL的背景知识 静态链接动态链接 当前链接的目标代码(.obj)如

JidanIt的专栏 821

C++下的DLL编程入门

一、 编写第一个入门级dll文件 1. 新建一个dlltest的dll工程,加入一源文件dlltest.cpp,包含addsubtract两个函数如下: _declspec(dllexport) int add(int a,int b) { retur...

chuifuhuo6864的博客 116

DLL相关知识

  MFCDLL   一般的,在介绍Windows编程的书中讲述DLL的有关知识较多,而介绍MFC的书则比较少地提到。即使使用MFC编写动态链接库,对于初步接触DLL的程序员来说,了解DLL的背景知识是必要的。另外,MFC提供了新的手段来帮助编写DLL程序。所以,本节先简洁的介绍有关概念。   DLL的背

xuplus的专栏 924

Visual Studio 2017,C++MFC免注册调用大漠插件图文教程,详细版

有很多人都在问C++MFC怎么免注册调用?其实这些都有参考但是对于新手来说,编译器对新手的不友好,很多编程新手就算是找到别人的注册方法也分析运行不了,这是为什么呢?这是出教程的人根本就没考虑到新手,很多细节问题留下来了,然后你哪里就报错,代码报红,就编译不通过,然后你就觉得这个方法不行,然后就放弃了,今天我们就来解决这个问题,用最详细的图文来告诉你跟着我的步骤来你就能C++MFC免注册调用大漠插件。...

a756598009的博客 5634

MFC(动态链接库编程,孙鑫C++第十九讲笔记整理)

1.DLL简介,动态库,静态库。动态库节约磁盘空间,静态库体积大。可以用多种语言编写DLL文件。动态库有两种加载方式:隐式调用动态加裁!   2.新建一个DLL1的dll工程,加入一源文件名为dll1.cpp,加入addsubtract两个函数,注意此时须在函数名前加_declspec(dllexport),并且编译。用dumpbi -exports dll1.dll查看其导出的函数,

hellokazhang的博客 1万+

TCLVC++ DLL交互实战演示项目

动态链接库(DLL)是Windows操作系统中用于共享函数资源的一种二进制文件格式。它可执行文件(EXE)不同,DLL不能直接运行,而是被其他程序在运行时加载调用。DLL文件通常以.dll为扩展名。DLL的主要作用包括:代码复用:多个应用程序可以共享同一个DLL中的函数资源,减少重复代码。模块化设计:将功能模块独立出来,便于维护升级。资源节省:程序运行时只加载需要的DLL,节省内存。热更新支持。

weixin_34456923的博客 1265
上一篇: 容器的插队原则,移动容器元素位置。
下一篇: 如何添加CSerialPort类以及相应的消息函数
曾经一片
博客等级 码龄15年 24粉丝 63原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值