MFC怎样调用matlab
是这样的,我现在有matlab程序,由于我需要在mfc做一个界面,并且要在界面上显示出matlab程序做的图片,网上的教程都是把matlab程序写成c++的(相当于),能...
是这样的,我现在有matlab程序,由于我需要在mfc做一个界面,并且要在界面上显示出matlab程序做的图片,网上的教程都是把matlab程序写成c++的(相当于),能不能在不动我的matlab算法(程序)的基础上,单纯的实现mfc直接调用matlab,不是说直接调用图片,而是调用那个程序
展开
1个回答
展开全部
首先在matlab里新建一个产生figure的m文件hFig.m:function hFig()
figure('NumberTitle','off','MenuBar','none','ToolBar','none','Name','fig');
axis([0 1 0 1]);
(1)设定matlab环境: mex –setup mbuild –setup
(2)将m文件编译生成.dll .lib .h
mcc –B cpplib:libhFig hFig.m
(如果m文件中含有eval函数,则该eval函数中调用的函数(假设为evalfun)必须提前声明强制关联, 即在主函数体最开始处添加 %# evalfun)
(支持向量分类机需添加:%#function code_OneVsOne
%#function crossvalidatelssvm
%#function misclass
%#function code
%#function codedist_hamming
支持向量回归机需添加:%#function leaveoneoutlssvm
%#function mse
%#function gridsearch
%#function code
%#function codedist_hamming)
(3)设定VS2008环境:工具-选项-项目和解决方案-VC++目录
添加包含文件路径:。。。matlab\extern\include
添加库文件路径:。。。matlab\extern\lib
链接器-输入-附加依赖项:mclmcrrt.lib libhFig.lib
链接器-常规-附加库目录:。。。matlab\extern\lib\win32\microsoft
(VS2010:VC++目录在项目-属性-配置属性里)
(4)将生成的.lib .dll .h文件拷贝到MFC工程源文件目录,并将.h文件添加进解决方案
在源代码里添加:#include "libhFig.h"
对MCR及生成的库进行初始化
在CMyView::OnInitUpdate()里添加
if (!mclInitializeApplication(NULL,0))
{
AfxMessageBox(_T("Initialize Error!"));
return;
}
libhFigInitialize();
(5) 在需要处调用hFig.m函数(尽量使用try应付突发异常)
try
{
hFig();
}
catch (const mwException& erro)
{
CString str;
str = erro.what();
AfxMessageBox(str,NULL,NULL);
}
(6) 退出时释放调用的库
重写DestroyWindow(),添加
libhFigTerminate();
mclTerminateApplication();
figure('NumberTitle','off','MenuBar','none','ToolBar','none','Name','fig');
axis([0 1 0 1]);
(1)设定matlab环境: mex –setup mbuild –setup
(2)将m文件编译生成.dll .lib .h
mcc –B cpplib:libhFig hFig.m
(如果m文件中含有eval函数,则该eval函数中调用的函数(假设为evalfun)必须提前声明强制关联, 即在主函数体最开始处添加 %# evalfun)
(支持向量分类机需添加:%#function code_OneVsOne
%#function crossvalidatelssvm
%#function misclass
%#function code
%#function codedist_hamming
支持向量回归机需添加:%#function leaveoneoutlssvm
%#function mse
%#function gridsearch
%#function code
%#function codedist_hamming)
(3)设定VS2008环境:工具-选项-项目和解决方案-VC++目录
添加包含文件路径:。。。matlab\extern\include
添加库文件路径:。。。matlab\extern\lib
链接器-输入-附加依赖项:mclmcrrt.lib libhFig.lib
链接器-常规-附加库目录:。。。matlab\extern\lib\win32\microsoft
(VS2010:VC++目录在项目-属性-配置属性里)
(4)将生成的.lib .dll .h文件拷贝到MFC工程源文件目录,并将.h文件添加进解决方案
在源代码里添加:#include "libhFig.h"
对MCR及生成的库进行初始化
在CMyView::OnInitUpdate()里添加
if (!mclInitializeApplication(NULL,0))
{
AfxMessageBox(_T("Initialize Error!"));
return;
}
libhFigInitialize();
(5) 在需要处调用hFig.m函数(尽量使用try应付突发异常)
try
{
hFig();
}
catch (const mwException& erro)
{
CString str;
str = erro.what();
AfxMessageBox(str,NULL,NULL);
}
(6) 退出时释放调用的库
重写DestroyWindow(),添加
libhFigTerminate();
mclTerminateApplication();
追问
兄弟- -复制的。。。
追答
不可以直接调用,你需要将m文件转换为c++可以调用的静态链接库,那样就可以调用了。或者你在c++中调用matlab引擎,那样的话你需要将matlab m文件中的命令一条一条通过c++传给引擎去计算。
百度文库搜索”三种方式在C++中调用matlab“
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询