好文档 - 专业文书写作范文服务资料分享网站

20动态链接库编程

天下 分享 时间: 加入收藏 我要投稿 点赞

#include \

// CCompute

CCompute::CCompute() { }

CCompute::CCompute(int d1, int d2) { }

CCompute::~CCompute() { }

// CCompute 成员函数 int CCompute::Add() { }

int CCompute::Sub() { }

11

m_data1 = d1; m_data2 = d2;

return m_data1 + m_data2;

return m_data1 - m_data2;

int CCompute::Mul() { }

double CCompute::Div() { }

int Mod(int d1, int d2) { }

编译运行时,后弹出图20-6所示的对话框:

if (d2 == 0 ) { }

return d1 % d2;

AfxMessageBox(L\return 0; if (m_data2 == 0 ) { }

return (double)m_data1 / m_data2;

AfxMessageBox(L\return 0;

return m_data1 * m_data2;

12

图20-6 调试会话的可执行文件对话框

要求你选择或输入使用此DLL的应用程序之可执行文件的名称或路径。这是因为DLL虽然包含了可运行函数的二进制代码,但是它并不是独立的应用程序,不能单独运行。因此,我们必须编写使用DLL的客户程序。

20.2.4 添加客户程序项目

为了演示扩展DLL的应用,我们在原解决方案ExtDll中,添加一个客户程序项目ExtClient。具体做法是,打开新建项目对话框,选中“Visual C++”之“MFC”的“MFC应用程序”模板,键入项目名ExtClient。注意,需选在对话框底部的“解决方案”下拉式列表中选中“添入解决方案”表项,参见图20-7。

图20-6 新建客户程序项目的对话框

按“确定”钮进入“MFC应用程序向导”对话框,在“应用程序类型”页,选中“基于对话框”单选钮,按“完成”添加项目。

此时,ExtDll解决方案包含两个项目:DLL项目ExtDll和客户程序项目ExtClient,生成的文件目录结构为:

ExtDll ←解决方案目录

Debug ←解决方案的调试目录

13

Release ←解决方案的发行目录 ExtDll ←DLL项目目录

Debug ←DLL的调试目录 Release ←DLL的发行目录 res ←DLL的资源目录

ExtClient ←客户程序项目目录

Debug ←客户程序的调试目录 Release ←客户程序的发行目录 res ←客户程序的资源目录

20.2.5 设置依赖项

为了使客户程序可以调用DLL,需要将它们关联起来。最简单的办法是设置DLL项目为客户项目的依赖项。具体做法是,在项目管理区中选中客户项目名“ExtClient”,选中菜单项“项目\\项目依赖项”,在弹出的“项目依赖项”对话框中,选中“依赖栏”中的“ExtDll”复选框,参见图20-7。

图20-7 设置ExtClient项目依赖项的对话框

14

20.2.6 编写客户程序代码

1.编辑对话框资源

添加表示操作数的2个静态文本框和2个文本编辑框(ID值分别为IDC_DATA1和IDC_DATA2)、5个表示四则运算和取模运算的按钮(ID值分别为IDC_ADD、IDC_SUB、IDC_MUL、IDC_DIV和IDC_MOD)、表示计算结果的1个静态文本框和1个文本编辑框(ID值为IDC_RESULT),删除原来“确定”按钮,将原来的“取消”按钮的“Caption”属性值改为“退出”,参见图20-8。

图20-8 客户程序的对话框界面

2.添加控件变量

为了动态获取用户输入的数据,我们需要为2个表示操作数据的文本编辑框,添加控件的Value值类别int型变量m_iData1和m_iData2。

3.添加事件处理

分别对5个计算按钮,为对话框类CExtClientDlg添加按钮通知消息BN_CLICKED(鼠标单击)事件的处理程序OnBnClickedAdd等。

4.编写代码

为了让客户程序可以使用DLL项目中的计算类CCompute,需要在客户程序对话框类CExtClientDlg的头文件的头部添加包含语句:

#include \

在对话框类的定义中,手工添加公共型类变量和成员函数:

public:

CCompute *m_pComp; void Comp(UINT nID);

15

20动态链接库编程

#include\//CComputeCCompute::CCompute(){}CCompute::CCompute(intd1,intd2){}CCompute::~CCompute(){}//CCompute成员函数intCCompute::Ad
推荐度:
点击下载文档文档为doc格式
0v8wb6ciup4zk8m0i2f5
领取福利

微信扫码领取福利

微信扫码分享