关于在MATLAB中调用VC++的问题,我是这样理解的。我们先说一下MATLAB软件本身是由什么语言开发的,事实上,经过我查阅一些资料发现,MATLAB是用C开发核心的,界用是用VC++做的,由此看来功能强大的MATLAB也是由我们的微软C系语言编写的。
VC与MATLAB的接口问题,实际上我们就是想要研究在MATLAB中调用通过VC++编写的代码,而且我们要求在这MATLAB编译后,直接像MATLAB本身的语言一样,直接可以调用。其实对于MATLAB来说,它留了一个接口(这个就像软件中可以加载插件一样),这样就是可以直接加载别的语言的编译环境,比如我们可以直接在MATLAB中加载VC++的编译环境,那么通过加载VC++的编译环境,我们就可以在MATLAB的开发环境下,直接编译VC++的代码,编译通过后,这个代码实现的功能,就可以像MATLAT中的命令一样直接调用。后来我查了一些资料发现MATLAB就是通过将编译好的功能模块,直接调用,这也是我们能在MATLAB中看到有许多直接可用的函数
刚刚由于论文需要学习了一下VC与MATLAB的接口问题,现在总结如下:
首先需要配置环境,我使用的是在MATLAB环境下调用VC 编写的代码,所以首先在MATLAB环境中加载VC的环境,方法为:在MATLAB命令窗口中输入:mex -setup然后窗口会弹出一些选项,问你是否是自动加载目录,你可以选择否,即输入:n.然后会出现让你选择你所安装的VC环境,其中的选项让你选择,(当然在配置环境之前必须是已经安装了VC环境啊,)然后会自动检测你所安装的路径,然后你选择是即:y然后就可以了,但是你需要测试一下你配置的环境确实能用吗?下面你开始运行程序测试;将下面的程序写到VC环境里保存为Add.cpp
/ Add.cpp : 定义控制台应用程序的入口点。
#include<mex.h> // 使用MEX文件必须包含的头文件
//执行具体工作的C函数
double add(double x,double y)
{
return (x+y);
}
void mexFunction(int nlhs,mxArray *plhs[],int nrhs,const mxArray *prhs[])
{
double *a;
double b,c;
plhs[0]=mxCreateDoubleMatrix(1,1,mxREAL);
a=mxGetPr(plhs[0]);
b=*(mxGetPr(prhs[0]));
c=*(mxGetPr(prhs[1]));
*a=add(b,c);
}
保存在MATLAB工作目录下,然后在MATLAB命令窗口中输入:mex Add.cpp如果编译通过,则输入下面的语句:Add(3,4)如果输出结果,就说明你配置环境成功了。就可以在你以后VC和MATLAB混合编程中可以运用了。
另外,在用到 MEX文件时切记头文件应该包含#include<mex.h> // 使用MEX文件必须包含的头文件 |