vs2015:MFC创建可供其他语言使用的dll

3 篇文章 0 订阅
2 篇文章 0 订阅

在开始写一个简单的dll前,先初步态库相关的一些知识。

MFC(Microsoft Foundation Classes)是微软的基础类库。其以C++类的形式封装了Windows API,并且包含一个应用程序框架,以减少应用程序开发人员的工作量。其中包含大量Windows句柄封装类和很多Windows的内建控件和组件的封装类。

DLL(Dynamic Link Library,动态链接库)是一个包含可由多个程序,同时使用的代码和数据的库。通过使用 DLL,程序可以实现模块化,由相对独立的组件组成。

使用dll的优点:
1.使用较少的资源,当多个程序使用同一个函数库时,DLL 可以减少在磁盘和物理内存中加载的代码的重复量。
2.推广模块式体系结构DLL 有助于促进模块式程序的开发。
3.当 DLL 中的函数需要更新或修复时,部署和安装 DLL 不要求重新建立程序与该 DLL 的链接。

缺点:应用程序不能独立运行,需要在操作系统中另外安装对应的DLL。

下面通过两张图片来直观地理解静态库(.lib)和(.dll)的区别。
参考博文MFC下DLL编程(图解)

图一
在这里插入图片描述
了解上述基本知识后,可开始创建编写一个简单的dll。

我使用的是 visual studio 2015
文件—>>新建—>>项目

在这里插入图片描述
模板 —>> Visual C++ —> Windows —> MFC —> MFC DLL
在名称处输入项目名 ,我输入的dlltest1。

在这里插入图片描述

接着是MFC DLL 的项目向导
选择下一步
在这里插入图片描述
DLL类型选择第一个,使用共享 MFC DLL 的规则 DLL。然后点击完成。
三种类型的区别如下,按需选择:
1.共享MFC——DLL中不包含MFC库函数,需要另外安装MFC动态链接库后才能使用;
2.静态MFC——DLL中包含MFC库函数,可以脱离MFC动态链接库独立使用。
3.扩展DLL——扩展(extension)DLL中所定义的类和函数,只能被所MFC应用程序使用。而且扩展DLL中不能包含MFC库函数,也需要另外安装MFC动态链接库后才能使用。

项目生成后可以在解决方案资源管理器中里看到以下文件目录(没有看到解决方案资源管理器的在菜单栏里的视图里点开)。其中红色圈起来的(分别是以 你所创建项目名 为名字 以 .h. cpp.def 结尾的文件)文件是需要编写内容的。

在这里插入图片描述
接着先点开 dlltest1.h文件编写函数声明 。例如我想写一个求两整数和的函数,我的声明如下:
在这里插入图片描述
语句为

extern "C" int PASCAL EXPORT add(int a, int b);

简单解释一下这句语句。
首先 extern “C” 是为了 该函数能够被 非MFC程序 调用。不然在编译时,编译器会使用C++类型安全命名约定(也称作名称修饰)和C++调用约定(使用此调用约定从C调用会很困难)。
int 是 函数类型

PASCAL 在windows编程中是个宏
#define PASCALL __stdcall
它就是一个调用约定,例如
extern “C” int PASCAL f(int i);
声明f函数是编译的,且调用约定为__stdcall。
__stdcall的意思就是在调用这个函数的时候,由被调用者就是它自己释放参数。

EXPORT此处可以是显式导出;

接着点开 dlltest.cpp 写函数的具体定义。

在这里插入图片描述
具体语句

extern "C" int PASCAL EXPORT add(int a, int b)
{
 return a + b;
}

最后,在 dlltest2.def 里写

在这里插入图片描述语句

 add @1

其中 @1 表示可用序号1来调用该函数,若有其他定义的函数,则接着换行写 xx @2,xxx @3… nx @n 这么写。

最后根据你要用到此dll的平台的选择debug或release,以及x64或x86
在这里插入图片描述然后点绿色箭头编译,输出以下生成成功信息(后面弹出dos窗口失败关掉就好,因为这个程序不打开黑色窗口按绿色按钮会一步完成所有操作所以报错)。
在这里插入图片描述
然后再项目位置里打开,找到dll就可以在你需要的平台动态库的存放位置加上使用了。
在这里插入图片描述
以上。如有错,还请赐教。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在VS2015创建一个MFC新的DLL项目,你可以按照以下步骤进行操作: 1. 打开Visual Studio 2015,选择“文件”菜单,然后选择“新建”>“项目”。 2. 在“模板”窗口中,选择“Visual C++”>“MFC”类别。 3. 在右侧窗口中,选择“Win32 DLL”项目类型。 4. 输入项目名称,并选择存储路径,然后点击“确定”按钮。 5. 在“Win32 DLL向导”窗口中,选择“DLL”和“共享DLL”的选项,然后点击“完成”按钮。 6. 在解决方案资源管理器中,可以看到新创建DLL项目的文件结构。 开始编写你的DLL代码: 1. 在解决方案资源管理器中,打开“源文件”文件夹。 2. 双击“dllmain.cpp”文件来编辑DLL的入口函数。 3. 在该函数中,你可以添加DLL的初始化和清理代码,例如加载资源、初始化全局变量等。 4. 在“源文件”文件夹中,创建你自己的源文件,例如“mydll.cpp”。 5. 在“mydll.cpp”文件中,编写你自己的功能代码。 编译和生成DLL: 1. 在VS菜单栏中,选择“生成”>“生成解决方案”。 2. 如果编译成功,则在解决方案资源管理器中的“Debug”或“Release”文件夹下会生成一个以.dll为扩展名的DLL文件。 使用DLL: 1. 在你的应用程序中,包含DLL头文件,并链接DLL库。 2. 在你的应用程序中调用DLL提供的函数。 3. 如果需要,将DLL文件复制到你的应用程序的可执行文件所在的文件夹。 这样,你就成功创建了一个MFCDLL项目,并可以在你的应用程序中使用它。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值