MFC实现普通DLL
库有两种:动态链接库和静态链接库。
一,使用动态链接库:
通过项目——属性——配置属性——常规——项目默认值——配置类型下,选择动态库(.dll)选项
这样会生成.lib和.dll两种文件。
只是该.lib文件不包含程序实现文件,只包含函数入口信息,因此必须与对于生成的.dll文件配套使用。
使用时又分为静态链接和动态链接。
静态链接需要.h、.lib、.dll三种文件,使用时导入这三个文件即可。
动态链接只需要.dll文件,使用时通过LoadLibrary加载获取函数入口地址。
二、使用静态链接库:
通过项目——属性——配置属性——常规——项目默认值——配置类型下,选择静态链接库(.lib)选项
这样只生成.lib文件。
该lib文件不仅包含程序入口地址,也包含程序实现代码,与上面的.lib文件是不一样的。
使用时只需要.h,.lib文件即可。
参考文献:https://blog.csdn.net/piaoxuezhong/article/details/64127436
扩展dll生成DllMain()函数,这是与非扩展dll的区别:
三、MFC扩展DLL导出类
1.在dll类名前面添加AFX_EXT_CLASS;
2.将生成的dll文件放在调用类的当前目录中
3.包含进.h文件和生成的.lib文件。
注意:不需要再添加_AFXEXT预处理器,也不需要添加项目依赖项。
四、MFC扩展类导出全局变量
1.在.cpp中定义全局变量:int a=5;
2.在.h头文件中声明其为全局变量:extern AFX_EXT_DATA int a;
3.剩下的就和导出类2,3步一样了。
五、MFC扩展类导出全局函数
1.在函数前面添加AFX_EXPORT就可以了,如:AFX_EXPORT void show();
全体注意:上面三个宏AFX_EXT_CLASS、AFX_EXT_DATA、AFX_EXPORT都可以用__declspec(dllexport)替换,已经验证过了。
所有的过程没有用到dllimport这个关键词,不用再有这个思维误区了。
MFC实现普通DLL的更多相关文章
- C# 调用C++/MFC写的dll
C#调用C++的非托管类的dll其实很简单基本就是固定的调用格式. dll的编写,首先是打开VS新建一个C++的控制台程序,下一步后选择dll以及空文档即可.然后就是添加一个类添加一个方法.方法排头固 ...
- MFC的规则DLL与扩展DLL
一.MFC规则DLL MFC规则DLL可以在该dll内部使用MFC,但是与应用程序的接口不能是MFC的.能够被所有支持dll的编程语言所写的应用程序使用,当然也包括使用MFC创建的应用程序.在 ...
- MFC的规则DLL中资源使用的问题
今天刚刚做了一个静态链接到MFC的规则dll,即“Use MFC in a static library“,该dll用来显示一个窗体.然后在一个mfc可执行程序A.exe中调用这个dll文件,可以正常 ...
- MFC-创建MFC图形界面dll
创建MFC图形界面dll 概述: 利用MFC的DLL框架,制作带有图形界面的dll,可以实现很多功能. 流程: 选择静态链接MFC DLL:以免有的库没有. 采用该框架创建的MFC,会自动生产一个MF ...
- MFC创建动态链接库DLL并调用方法详解
实例一: 1.创建一个动态链接库工程,如login_dll. 2.在原工程头文件或者新建头文件如showdlg.h定义动态链接库的导出函数,代码如下: #include "stdafx.h& ...
- MFC中的DLL、LIb文件的创建、使用
动态链接库Dynamic-Linked Lib 的创建与使用 动态链接库(Dynamic Link Library 或者 Dynamic-link Library,缩写为 DLL),是微软公司在微软 ...
- MFC下的DLL编程学习
1.DLL库与LIB库对比: 静态链接库Lib(Static Link Library),是在编译的链接阶段将库函数嵌入到应用程序的内部.如果系统中运行的多个应用程序都包含所用到的公共库函数,则必然造 ...
- VC++:创建,调用MFC动态链接库(扩展DLL)
概述 DLL(Dynamic Linkable Library)动态链接库,Dll可以看作一种仓库,仓库中包含了可以直接使用的变量,函数或类. 仓库的发展史经历了"无库" ---& ...
- MFC 丢失MSVCR120D.dll 丢失mfc120ud.dll
随机推荐
- 排序算法 python
1.先写个原始数组和测试算法是否正确,输出多次,方便计算算法运算的平均值 2.开始第一个最简单的冒泡排序 3.“”选择排序“”,跟冒泡很像,每次选最大/最小,放进新list中. 3.1发现测试test ...
- UGUI随记
<color=#ffef00ff>武器</color>:巨剑 <color=#ffef00ff>种族</color>:人族 <color=#ffe ...
- Linux 安装OpenSSL出错的解决方法
以前编译php没有 –with–openssl 现在要使用到 openssl ,phpinze扩展安装,但是在make时候报错 今天找这个在网上找了大半天,最后总结应该是php版本本身的问题,错误是p ...
- 【BZOJ4804】欧拉心算 莫比乌斯反演+线性筛
[BZOJ4804]欧拉心算 Description 给出一个数字N Input 第一行为一个正整数T,表示数据组数. 接下来T行为询问,每行包含一个正整数N. T<=5000,N<=10 ...
- Angular关于$anchorScroll的定位滚动
以下是实现定位滚动的代码: <!DOCTYPE html> <html lang="en" ng-app="app"> <head ...
- elasticsearch从入门到出门-08-Elasticsearch容错机制:master选举,replica容错,数据恢复
假如: 9 shard,3 node Elasticsearch容错机制:master选举,replica容错,数据恢复 最佳分配情况: 这样分配之后,不管其中哪个node 宕机这个es 依然可以提供 ...
- unix网络编程笔记(二)
第四章笔记 1. 基本Tcpclient/server程序的套接字函数 2. socket函数: int socket(int family,int type,int protocol); (1)so ...
- FPGA低温不能启动分析
FPGA低温不能启动分析 现象描写叙述:在给medium板光端机做低温试验时,分别给发送版.接收板断电又一次启动,发现有的板子在-40°能够启动,而有些板子在-20°都不能启动.须要升高温度到0°以上 ...
- 虚拟机 minimal 安装增强包
在虚拟机下安装了一个centos的minimal镜像,发现增强包不能安装,鼠标不能在虚拟机和物理机间自由切换.不能共享粘贴板,非常是不爽,这里摸索出在centos minimal OS下安装增强包的 ...
- STM32L0 HAL库 TIM定时1s
STM32L0的定制器资源: 本实验使用TIM6 HSI频率是16Mhz,则单指令周期是1/16Mhz 预分频设置为1600,则每跑1600下,定时器加1,相当于定时器加1的时间是1600*(1/16 ...