matlabvs编译器
‘壹’ 如何vs2010mfc调用matlab 2010生成dll进行编程
通常在实现图像处理的算法时我们使用Matlab编程,因为它具有丰富的库函数以及操作方便,然而在工程项目中通常使用C/C++语言。如果我们将matlab代码完全重写成C++代码会很麻烦,最好的办法是借助matlab与C/C++接口将.m程序转成dll文件!
一、使用matlab将.m转成dll文件
1、在命令行中输入mex -setup
提示你是否要在本地安装matlab compilers,然后选择compiler类型,有matlab自带的编辑器以及检测到的其他编辑器,比如“Microsoft Visual C/C++ version 6.0 in E:\Program Files\Microsoft Visual Studio”,根据自己实际情况选择。
2、在命令行中输入mbuild -setup
这里的选项和上面类似,依次选择环境确定。
3、生成dll文件
一句命令mcc -W cpplib:add -T link:lib add.m
前面的add表示生成的dll文件名,后面的add.m顾名思义是.m文件名。生成后会多出8个文件,有用的是add.ctfadd.dll add.lib add.h4个文件,据说新版的Matlab不会生成.ctf文件。
二、VC6.0中调用生成的dll文件
上面生成的dll文件,我们可以借助VC6.0的Depends工具查看导出函数名,但是我们要调用导出函数必须要知道函数的形参返回类型等,这里要借助.h文件,它包含了导出函数的声明,下面以实例来讲解使用方法:
1、add.m文件
function [a,b]=add(x,y)
a=2*x+y;
b=3*y;
end
注意了add函数有两个返回值,可以猜测一下在C++中是如何处理的;
2、add.h文件
截取其中一段关键代码如下:
extern void add(int nargout, mwArray& a, mwArray& b
, const mwArray& x, const mwArray& y);
实际上函数的返回是变相的放到形参中的,依次是输出参数个数,输出参数,输入参数。PS 现在做的这个项目中用户自定义算法dll使用的规则和这里类似!
3、C++中调用dll文件
(1)新建空工程,将上面提及的4个文件放到工程目录下;
(2)VC++目录中包含目录:matlab 内的include目录
比如我的是 E:\MATLAB7\extern\include
(3)VC++目录中库目录:matlab 内的lib目录
E:\MATLAB7\extern\lib\win32\microsoft\msvc60,要根据VC++版本修改!
(4)工程属性-》连接-》输入-》附加依赖项
输入:add.lib mclmcrrt.lib mclmcr.lib,第一个是生成的。或者在预处理中加入下面代码
#pragma comment(lib, "mclmcrrt.lib")
#pragma comment(lib, "mclmcr.lib")
#pragma comment(lib, "add.lib")
4、C++代码
#include <iostream>
#include "add.h"
using namespace std;
int main()
{
if(!addInitialize())
{
cout<<"initilize failed!!!"<<endl;
return -1;
}
mwArray a(1,1,mxDOUBLE_CLASS);
mwArray b(1,1,mxDOUBLE_CLASS);
a(1,1)=20;
b(1,1)=30;
mwArray x(1,1,mxDOUBLE_CLASS);
mwArray y(1,1,mxDOUBLE_CLASS);
//输出参数个数,输出参数,输入参数。
add(2,x,y,a,b);
double *i=new double;
double *j=new double ;
x.GetData(i,1);
y.GetData(j,1);
cout<<"x="<<*i<<" y="<<*j<<endl;
getchar();
return 0;
}
注意:addInitialize()一定要!
‘贰’ 如何使用matlab与vs编译器
1. 安装
单独安装、和MATLAB同时安装。
2. 设置(以vs2005为例)
>> mbuild -setup
Please choose your compiler for building standalone MATLAB applications:
Would you like mbuild to locate installed compilers [y]/n? y
Select a compiler:
[1] Lcc-win32 C 2.4.1 in D:\PROGRA~1\MATLAB\R2010a\sys\lcc
[2] Microsoft Visual C++ 2008 SP1 in D:\Program Files\Microsoft Visual Studio 9.0
[3] Microsoft Visual C++ 2005 SP1 in C:\Program Files\Microsoft Visual Studio 8
[0] None
Compiler: 3
Please verify your choices:
Compiler: Microsoft Visual C++ 2005 SP1
Location: C:\Program Files\Microsoft Visual Studio 8
Are these correct [y]/n?
Trying to update options file: C:\Documents and Settings\Administrator\Application Data\MathWorks\MATLAB\R2010a\compopts.bat
From template: D:\PROGRA~1\MATLAB\R2010a\bin\win32\mbuildopts\msvc80compp.bat
Done . . .
3. 使用
(1)在 MATLAB 环境中使用 mcc 命令;
(2)在系统命令环境中使用 mcc.exe (在Windows上);
(3)在 MATLAB 环境中使用 Deployment Tool。
4. 程序发布
(1)使用 MATLAB 命令 builder;
(2)使用 Deployment Tool 图形化工具。
一般来说,需要发布的文件有3个:
(1)编译得到的可执行文件或库函数;
(2)CTF 文件;
(3)MCRInstaller.zip。
在最终用户的计算机上,首先需要把MCRInstaller.zip 解压,并把 MCR 中可执行文件所在目录添加到系统路径上,然后就可以使用编译后的程序了。
‘叁’ 如何设置matlab为c++编译环境
如何设置matlab为c++编译环境
1. 安装
单独安装、和MATLAB同时安装。
2. 设置(以vs2005为例)
>> mbuild -setup
Please choose your compiler for building standalone MATLAB applications:
Would you like mbuild to locate installed compilers [y]/n? y
Select a compiler:
[1] Lcc-win32 C 2.4.1 in D:\PROGRA~1\MATLAB\R2010a\sys\lcc
[2] Microsoft Visual C++ 2008 SP1 in D:\Program Files\Microsoft Visual Studio 9.0
[3] Microsoft Visual C++ 2005 SP1 in C:\Program Files\Microsoft Visual Studio 8
‘肆’ matlab2020b找不到vs2015编译器
matlab2020b找vs2015编译器方法如下:
1、首先点击桌面matlab图标打开软件。
2、然后找到命令窗口。
3、输入edit的字符,然后按下enter键。
4、即可显示编辑窗口。
‘伍’ 误删了C盘Windows下的SDK文件夹,vs2013可以使用,matlab找不到vs编译器
现在用的电脑多数是WIN64位机,但是在安装MATLAB2011a时并不能顺利安装编译器这是应为在64位机上安装MATLAB时并没有安装编译器。因此就带来不能使用m文件等一系列问题。那么就需要手动安装,但是网上的手动安装教程都是残缺不全的。介绍的最详细的是国外的mathworks网站。下边具体详述其操作步骤。步骤一:对于MATLAB7.12,对于64位机来说,VisualC++2010Express和SDK7.1都需要安装。如果不知道Windows中是否安装了上述软件,就假设你已经安装,并进行一下步骤。步骤二:为了避免错误,如果你既没有安装VisualC++2010也没有安装SDK7.1,那么可以进行如下步骤:1.安装SDK7.1,如果安装失败按照步骤三进行,然后再回到本步骤二的3.2.到参考资料的1网站下载文件包,SDK7.1.3.安装VisualC++2010orSDK7.1。步骤三:如果你已经安装了VisualC++2010ExpressSP1而没有安装SDK7.1,按照如下步骤进行:1.卸载VisualC++2010Redistributable,x64和x86版都要卸载。这个可以从控制面板卸载程序卸载。2.安装SDK7.1,在安装SDK7.1是确保取消VisualC++Compilers和MicrosoftVisualC++2010选框。3.至参考资料网站1下载SDK7.1安装包。4.重新安装VisualC++2010Redistributablepackages。步骤四:如果连个文件包都安装后,在编译期间仍然出现错误,那么就需要安装SDK7.11.至相关网站下载Windows7和.NETFramework4.下载完成后安装。注意事项:如果有外语知识按照参考资料中的网站1完成不成问题,但是有写不同。1.在安装时可以将SDK“winsdk_web.exe”安装时路径改为“MicrosoftVisualStudio10.0”文件夹下。2.重新启动MATLAB。
‘陆’ matlab7.0 mbuild -setup不显示vs2008的编译器
没有 VS2008,不过在VS2005中: 项目 -> 添加类 -> c++ -> c++ 类