vc调用matlab的dll

      编译环境:matlab R2010b

                     vc 6.0

      操作系统 window xp sp3

 

过程如下:

 

1.安装matlab 和c/c++编译器:

      Matlab环境中分别运行

mex setup   

并进行相关配置 

mbuild -setup

同样进行相关配置 

(网上教程很多,一下同)

 

2.新建.m文件myadd.m

 

function y=myadd(a,b)
y=a+b;

 

 

3.编译生成dll

   mcc -W cpplib:myadd -T link:lib myadd.m

 

  生成的文件中有myadd.h ,myadd.lib,myadd.dll

 

4.vc新建工程

 

   在工具->选项->include目录中包含:...MATLAB/R2010B/EXTERN/INCLUDE

    lib目录中包含....MATLAB/R2010B/EXTERN/LIB/WIN32/MICROSOFT

    然后通过菜单工程/设置,打开工程设置属性页,进入Link页面,在Object/library modules编辑框中,添加文件名通过菜单工程/设置,打开工程设置属性页,进入Link页面,在Object/library modules编辑框中,添加相关的lib文件名例如mclmcrrt.lib

   然后复制文件myadd.h ,myadd.lib,myadd.dll工程目录下

5.编写代码

 

 

 #include <iostream.h> #include "myadd.h" //using namespace std; //没有加这句而只加上面这句(或在工程设置里加上DLL.lib)会链接错误 #pragma comment(lib,"myadd.lib") //mclmcrrt.lib void main() { double* x = new double[2]; double* y = new double[1]; if(!mclInitializeApplication(NULL,0)) cout<<"InitializeApplication failed"; myaddInitialize(); x[0]=1.0; x[1]=2.0; mwArray mwx(1,2,mxDOUBLE_CLASS); mwx.SetData(x,2); mwArray mwy(1, 1, mxDOUBLE_CLASS); myadd(3,mwy,mwx(0),mwx(1)); mwy.GetData(y,1); // c=myadd(a,b); //mwx.SetData(x, 2); //mwx.GetData(y, 1); //cout<<y[0]; myaddTerminate(); cout<<y; //返回后还需要将mwArray转回C++类型数据 /* for(i=0;i<6;i++) cout<<x[i]<<' ';*/ mclTerminateApplication(); //myadd(int nargout, mwArray& y, const mwArray& a, const mwArray& b); }

 

 

你可能感兴趣的:(null,matlab,Class,dll,编译器,2010)