由MATLAB的.m文件生成动态链接库的方法说明

3 篇文章 0 订阅
1.把MATLAB编译器(MATLAB Complier: mcc)集成到 VC6.0中

第一步:在安装MATLAB时,要安装MATLAB编译器(MATLAB Complier )。

 

第二步:在MATLAB命令提示符>>或者DOS命令框中键入命令:

          mex –setup

        进行编译环境选择:VC6.0。

 

第三步:在MATLAB命令提示符>>或者DOS命令框中键入命令:

          mbuild –setup

        进行编译环境选择:VC6.0。

 

第四步:在MATLAB命令提示符>>键入命令:

          prefdir

        显示用户 preference 目录位置。

 

第五步:在MATLAB命令提示符>>键入命令:

          mccsavepath

        然后将MATLAB的work目录中的mccpath文件拷贝到用户 preference 目录中。

        保存Complier的路径信息。

 

第六步:如果使用的是Windows98,要在你的config.sys文件中加入一行:

        shell=c:\command.com /e:32768 /p

 

第七步:在 VC6.0的Tools -> Customize -> Add-ins and Macro 选中MATLAB add-in for Visual Studio。将会出现MATLAB add-in for Visual Studio 工具栏。

      同时MATLAB已在VC6.0的 Wizard 中新增了一项:MATLAB Project Wizard

2.MATLAB Project Wizard 的使用方法

第一步:在VC6.0中选取 File -> New -> MATLAB Project Wizard 建立一个新项目。

第二步:在 MATLAB Project Wizard 中,选择项目的应用类型:

 

共有五种类型可供选择:

l         C-MEX DLL

l         M-MEX DLL

l         Windows Console EXE

l         Share M-DLL

l         Simulink C S-Function

选择 Share M-DLL 来建立 Windows 动态链接库。

 

生成的新项目信息

  

第三步:选择  .m 文件


选择要加入到动态链接库中的 .m 文件

  


加入的 .m 文件和由它生成的C文件

 

第四步:对 VC6.0 编译环境进行配置:头文件、库文件的路径、链接导入的静态库。

        导入C:\MATLAB6p5\extern\lib\win32\microsoft\msvc60 中的静态库

 

第五步:编译、链接建立动态链接库DLL文件。

 

第六步:若要在项目中添加新的 .m 文件,可作用MATLAB add-in for Visual Studio 工具栏中的第一个按钮。

3.如何在自己的程序中使用 .m文件生成的动态链接库

 

以C:\MATLAB6p5\toolbox\images\images\mean2.m为例,建立的项目名为 mean2d。生成了mean2d.dll文件和mean2d.lib文件。

 

第一步:如前面所述:对 VC6.0 编译环境进行配置:头文件、库文件的路径、链接导入的静态库。并在导入的静态库中添加mean2d.lib文件。

 

第二步:在自己应用程序项目的头文件中加入以下代码:

#include "matlab.h"

 

extern "C" __declspec(dllimport) mxArray * mlfMean2(mxArray * x);

extern "C" __declspec(dllimport) void mean2dInitialize();

extern "C" __declspec(dllimport) void mean2dTerminate();

 

第三步:在要使用mean2函数的文件中加入以下代码:

#include "matlab.h"

#include "matrix.h"

………

 

 

 

 

 

 


//声名两矩阵,并初始化

mxArray *A,*b;

           A=NULL;

           b=NULL;

 

       //由DIB文件头信息得到图像的行列数

      int col=m_dibFile.m_lpBMIH->biWidth;

int row=m_dibFile.m_lpBMIH->biHeight;

 

       //以图像行列数的大小建立矩阵A,8位无符号数

          A=mxCreateNumericMatrix(row,col,mxUINT8_CLASS,mxREAL);

             

       //建立一个标量 b ,大小为2.0

           mlfAssign(&b,mlfScalar(2.0));

 

           //将DIB文件的图像数据拷贝到矩阵A

memcpy(mxGetPr(A),m_dibFile.m_lpImage,row*col*sizeof(BYTE));

      

       //计算均值

           b=mlfMean2(A);

      

          //将结果拷贝出来

          double reslt;

          memcpy(&reslt,mxGetPr(b),sizeof(double));

      

          //销毁矩阵

          mxDestroyArray(A);

          mxDestroyArray(b);

 

          //显示结果

CString info;

          info.Format("图象的均值为: %f",reslt);

          AfxMessageBox(info);     

 

第四步:在使用mean2函数的构造函数和析构函数中分别加入下列代码:

        //在构造函数中

mean2dInitialize();

 

 

        //在析构函数中

        mean2dTerminate();

 

第五步:将mean2d.dll文件和mean2d.lib文件拷贝到你的应用程序项目目录中。

 

第六步:编译,链接,运行应用程序。

 

 

 

4.发布程序

   在没有安装MATLAB的计算机上,以上程序是无法正常运行的。好在MATLAB 将其所有的运行库,打包成了一个自解压文件。C:\MATLAB6p5\extern\lib\win32\mglinstaller.exe

   在没有安装MATLAB的计算机上,运行mglinstaller.exe,它解压出两个目录  bin 和toolbox。你只要把 bin\win32 加入到计算机系统变量PATH中即可。
  • 2
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值