matlab编写的.M文件用vc6.0(MFC(dll)工程转换为dll文件,并用vc6.0(MFC对话框工程调用dll)文件

来源:互联网 发布:商城模板html源码 编辑:程序博客网 时间:2024/05/19 11:47

   在开始建MFC(DLL)工程之前我们得下载matcom程序,然后安装,打开vc6.0然后打开 工具-定制-附加项,然后选中visual MATCOM Add-in,成功后在vc6.0工具栏上会有显示。

  开始我们的工程:

  (1)打开vc6.0建一个MFC(DLL)工程,然后点击工具栏上的m++按钮,添加编辑好的.m文件

  (2)这时点击fileview视图,可以看到多了几个文件,然后将xx.h文件添加到工程中,注意xx表示.m文件的文件名

 (3)打开stdafx.h,添加头文件#include“xx.h”

 (4)定义dll文件入口,我们可以在 "工程名.h"文件中定义入口函数,形式如下:

     extern “C” void run(int x,int y)(注意入口函数run可以随意定义,这就取决你把什么函数作为入口了)

(5)在“工程名.h”文件中实现这个入口函数,既在run函数中调用.m文件中的函数

 (6)在“工程名.def”文件的最后面加入“run@1”语句,此语句必须加入,否则生成的dll文件无用。

  注意加入.m文件后会生成一个g_xx.cpp文件,其中有一个main()函数,将这个文件删掉。

 (7)编译产生dll文件。

     例如我们有change.m文件如下

        function[]=change(x,y)

     t=x;

    x=y;

    y=t; 

  而

  run函数如下

   initM(MATCOM_VERSION)

    Mm  a,b;

    a=x;

   b=y;

change(a,b)

exitM();

接下来我们调用dll文件

新建工程mfc(exe)对话框文档;

     在void CMyfederateDlg::OnOK()函数中添加

HINSTANCE hinst=NULL;

 hinst=LoadLibrary(mycomname);
 if(hinst!=NULL)
 {
  AfxMessageBox("加载成功");
   }

lpfn=GetProcAddress(hinst,"run");注意这里的run就是前面生成dll文件工程的入口函数。
 if(lpfn==NULL)
 {
  AfxMessageBox("不能加载");
  return;
 }
 else{GetDT=(GETDT)lpfn;}

 (*GetDT)(comin1,comin2);这里就是run函数的两个形参,这样就达到调用入口函数run的目的。

 附:

  Matcom工具的安装

     先安装matcom

   打开vc++6.0

   打开工具->定制->附加项和宏文件->选中 visual matcom Add-in

   这样就将matcom嵌入到vc6.0中了

     如果嵌入成功后打开vc6.0会在工具栏窗口有显示。