mfc调用dll详细步骤,mfc生成dll
如果要写模块化软件,必须对动态链接库(dll)有一定的了解。在这段时间里,我在修改之前的软件时,决定把复用的类和对话框做成dll。下面是一个简单的例子,如何从MFC扩展dll中导出类和对话框。
首先,创建MFC扩展DLL
步骤:
运行visual studio 6.0-文件-新建.项目;
选择Mfc AppWizard(dll),在右侧项目名称下输入ExportClass,点击下一步;
选择MFC扩展dll(使用共享MFC dll)并单击“完成”;
以上完成了扩展DLL框架的建立,接下来下面建立输出类:
插入-新类别.在“打开”对话框中,为“类类型”选择“一般类”,并在类名中输入。
CDogClass(当然也可以用其他名字。我喜欢小狗,所以都用。在“基类”下输入CObject,然后输入“确定”;
为该类添加两个测试变量int m _ nNumCString m _ sData完整的类信息如下:
DogClass.h头文件:class CDogClass: public CObject
{
私人:
int m _ nNum
CString m _ sData
公共:
int show DLG();
void Init();
CDogClass();
virtual ~ CDogClass();
void SetNum(int num){ m _ nNum=num;};
int GetNum(){ return m _ nNum;};
void SetData(CString data){ m _ sData=data;};
CString get data(){ return m _ sData;};
};
DogClass.cpp的实现文件:
CDogClass:CDogClass()
CDogClass:~CDogClass()
{}
void CDogClass:Init()
{
m _ nNum=0;
m _ sData=“”;
}
编辑DogClass.h头文件以修改以下行;class AFX_EXT_CLASS CDogClass:公共对象
完成上面类的建立,建立下面的输出对话框;插入资源.新建一个对话框,添加两个编辑框IDC _ EDIT1和IDC _ EDIT2,然后构建CDlgDog对话框类,为两个编辑框添加变量int m_nNum和CString m_sData。
在DogClass.cpp中的#include DogClass.h 下添加#include DlgDog.h
在DogClass类中添加int show DLG();函数用于调用对话框,并在int CDogClass:ShowDlg()中添加以下代码:CDlgDog dlg
DLG . m _ nNum=GetNum();
DLG . m _ sData=get data();
if (IDOK==dlg。多模态())
{
SetNum(DLG . m _ nNum);
SetData(DLG . m _ sData);
返回1;
}
返回0;
然后编译Dll,你会发现几个错误。不要怕,很容易解决。首先,删除DlgDog.cpp中的# include“在此添加附加includes”这一行;其次,在stdax.h中添加include‘resource . h’,然后编译,OK。
第二,建立一个DLL测试程序
步骤:
基于对话框创建一个新的MFC应用程序,添加一个按钮IDC_BUTTON1,并在按钮事件中添加以下代码:Void CTestexportClassDLG:on button 1()
{
CDogClass狗;
狗。init();
如果(狗。ShowDlg()!=0)
{
CString字符串;
海峡。格式(编号为:%d数据为:%s 狗。GetNum(),狗。get data());
AfxMessageBox(str);
}
}
将DogClass.h和ExportClass.lib文件从ExportClass文件目录复制到测试程序目录;
在TestExportClassDlg.cpp中添加行# include“dog class . h”;将ExportClass.lib添加到链接器的导入库中,选择所有配置。在VS的项目-设置下的设置中,然后在下面的页面中添加export class . lib Object/Library control;
不要忘记将ExportClass.dll复制到系统目录或当前应用程序目录;然后编译一下就OK了。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。