Chinaunix首页 | 论坛 | 博客
  • 博客访问: 949867
  • 博文数量: 264
  • 博客积分: 10107
  • 博客等级: 上将
  • 技术积分: 2455
  • 用 户 组: 普通用户
  • 注册时间: 2007-05-09 16:34
文章分类

全部博文(264)

文章存档

2012年(1)

2011年(11)

2010年(128)

2009年(82)

2008年(42)

我的朋友

分类: C/C++

2010-04-12 09:22:20

一、   函数的定义和使用方法:  
   
    第一步:  
   
     运行AppWizard,定义项目名为mydll,选择MFC   AppWizard(dll),而不是MFC   AppWizards(exe)。  
   
    第二步:  
   
     在这个例子中,只有一个AppWizard屏幕出现,选择MFC扩展DLL(MFC   Extension   DLL   (using   shared   MFC   DLL),点击FINISH生成工程。  
   
    第三步:  
   
     点击File中的New,选择C/C++   Header   File,File   Name中输入dll,点击OK,创建dll.h。输入extern   "C"   __declspec(dllexport)   int   fun(int   x1,int   x2,int   x3);   ,保存。  
   
    第四步:  
   
     点击File中的New,选择C++   Source   File,File   Name中输入dll,点击OK,创建dll.cpp。输入  
   
    #include   "stdafx.h"  
    #include   "dll.h"  
    extern   "C"   __declspec(dllexport)   int   fun(int   x1,int   x2,int   x3)  
     {  
      return   x1+x2+x3;  
     }  
   
    编译生成mydll.dll和mydll.lib。  
   
    第五步:  
   
    选择Project   中Add   To   Project   中的New   ,   重新生成一个工程,选择MFC   AppWizards(exe),项目名为mydlltest   ,   选择Single   Document   ,点击FINISH,生成一个新的工程。选择菜单中的Project   àSet   Active   Project   àmydlltest   ,将mydlltest设为当前活动工程。  
   
    第六步:  
   
    拷贝…\mydll\debug\mydll.dll   到   ..\mydlltest\debug\下,拷贝…\mydll\debug\mydll.lib到…\mydlltest\目录下。  
   
    第七步:  
   
    在mydlltestView.cpp中的#endif下添加  
   
    extern   "C"   __declspec(dllimport)   int   fun(int   x1,int   x2,int   x3);  
   
    在void   CMydlltestView::OnDraw(CDC*   pDC)中添加代码如下:  
   
    void   CMydlltestView::OnDraw(CDC*   pDC)  
     {  
      CMydlltestDoc*   pDoc   =   GetDocument();  
      ASSERT_VALID(pDoc);  
      //   TODO:   add   draw   code   for   native   data   here  
      int   x=fun(1,2,3);  
      CString   str;  
      str.Format("%d",x);  
      pDC->TextOut(10,10,str);  
     }  
   
    第八步:  
   
    在WorkSpace中的mydlltest   files上点击右键,选择Add   files   to   Project   ,将mydll.dll添加到工程。   将mydll.lib文件也添加到mydlltest工程中 ,这样编译就通过了
  好了,我们的工作做完了,运行一下看看吧!  
   
    二、   类的添加和使用步骤:  
   
    在mydll中生成一个新类,类的声明处改为class   AFX_EXT_CLASS   CMyClass   ,在此类中和其他类一样添加自己需要的变量和函数,编译生成新的dll和lib,重复上面的第六步,在mydlltest中利用上面的方法生成一个myclass.h文件,拷贝mydll中myclass.h的所有代码到新生成的myclass.h中。在需要使用dll中CmyClass类的文件中包含myclass.h,然后我们就可以向其他类一样使用该类了。  
   
    三、   字符串的定义和使用  
   
    在mydll中定义字符串资源,编译生成新的dll和lib,重复上面的第六步,在mydlltest中的myclass.h中添加   #define   IDS_MYSTR   1(假设我们定义的字符串资源的ID号为IDS_MYSTR),在需要是要该字符串的地方添加#include   "myclass.h",即可使用该字符串了。  
   
    CString   str2;  
    str2.LoadString(IDS_MYSTR);  
   
    四、   对话框的定义和使用  
   
    在mydll中定义对话框资源,生成一个新类CDlg,类的声明处改为class   AFX_EXT_CLASS   CDlg   :   public   CDialog   ,像其他对话框一样定义对话框的属性和功能,编译生成新的dll和lib,重复上面的第六步,在mydlltest中利用上面的方法生成一个dlg.h文件,拷贝mydll中dlg.h的所有代码到新生成的dlg.h中。在需要使用dll中此对话框资源的文件中包含dlg.h,然后我们就可以向其他对话框一样使用此对话框了。  
   
    CDlg   dlg;  
    dlg.DoModal();
 
-------------------------------------------
阅读(722) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~