使用VS进行动态链接库的设计
使用VS进行动态链接库的设计
建立基于对话框的两个应用程序其界面,再建立一个动态连接库。其中动态连接库
实现了以下四个接口
int add(int a,int b);//把a,b两个数据相加
int Substruct(int a,int b);//把a,b两个数据相减,即a-b;
void setData(int);//向b发送数据;
int getData();//接收数据;
(a)的前两个编辑框分别放置加数和被加数,减数和被减数;第三个编辑框放置结果。点击”+”调用动态连接库的” int add(int a,int b)”计算结果,把结果放到第三个编辑框中。点击”-”调用动态连接库的” int Substruct(int a,int b)”计算结果,把结果放到第三个编辑框中。点击发送按钮把数据发送给(b)。
发送过程这样完成的,首先(a)调用”void
setData(int)”数据放到(a)、(b)进程的共享数据结构中,(b)建立一个线程,他每隔一秒钟检查一下这个共享数据结构中的数据,如果数据发生变化就把他取出来,并使用SendMessage调用发送到主界面。主界面接到消息后把他显示到(b) 的编辑框中。
建立一个基于win32的动态链接库项目和空项目。
空项目中分别建立头文件和cpp文件
动态链接库以DllMain为程序入口
建立一个基于MFC规则的DLL动态链接项目,声明导出函数,建立.def模块定义文件:
输入想要的输出的函数,_stdcall定义导出函数入口点调用约定为_stdcall,extern "C"说明导出函数使用C编译器,函数名遵循C编译器的函数名修饰规则,不加extern "C"说明使用C++编译器的函数名修饰规则。
建立一个基于对话框的ShiYan4xianshi项目,设立他们相对于对话框类的成员变量,及对应的交换函数。
设置“+”、“-”按钮的响应函数,单击“+”按钮的响应函数如下:
设计发送函数
接受进程中有一线程等待数据放到缓冲区中,数据来时线程将数据从缓冲区中取出,并通知主线程显示出来。
(1)首先建一个Thread线程文件,头文件定义一个自定义消息,用来通知主线程显示数据
(2)线程先加载动态链接库文件,得到getData函数地址,从共享缓冲区中得到数据后发送消息到主线程显示数据。
主界面文件Dlg.cpp中自定义消息和线程启动文件
(1)首先添加线程头文件:
#include “Thread.h”
(2)添加消息映射
(3)在主界面头文件Dlg.h中添加消息响应函数
编译完成两个应用程序exe和动态数据库dll必须在一个文件夹下,才能实现进程之间的通信。