zhanghongxing 发表于 2008-9-23 21:41

vc++和matlab的接口问题:

vc++6.0和matlab7.0的接口问题:用vc++6.0调用matlab7.0的m文件,在vc++6.0环境下进行配置时,matalb7.0安装目录下extern\include 下没有cpp文件夹,这是怎摸回事?是因为matlab7.0安装不对吗?

科技在线 发表于 2008-9-25 11:27

不会安装错误的啊,你建一个试试

zhanghongxing 发表于 2008-9-25 11:34

实际问题是:
使用matlab7.0数学函数库的环境设置时,在vc++6.0中进行进行编译环境配置出现的问题:子目录bin中有matlab.exe, 没有medit.exe有meditor.exe;,没有mbuild.exe 。
extern中的include中有libmex.def,没有libmatlab.def,没有libmmfile.def。而且matalb7.0安装目录下extern\include 下没有cpp文件夹。
请问这是怎摩回事?是我安装的matlab有问题吗?

建一个cpp文件夹好像不行。

科技在线 发表于 2008-11-2 18:29

关于在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=mxCreateDoubleMatrix(1,1,mxREAL);
   a=mxGetPr(plhs);
   b=*(mxGetPr(prhs));
   c=*(mxGetPr(prhs));
   *a=add(b,c);
}

保存在MATLAB工作目录下,然后在MATLAB命令窗口中输入:mex Add.cpp如果编译通过,则输入下面的语句:Add(3,4)如果输出结果,就说明你配置环境成功了。就可以在你以后VC和MATLAB混合编程中可以运用了。

另外,在用到 MEX文件时切记头文件应该包含#include<mex.h>    // 使用MEX文件必须包含的头文件
页: [1]
查看完整版本: vc++和matlab的接口问题: