mfc调用dll详细步骤,mfc生成dll

  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的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: