我也想用VC2010 调用matlab画图 请问你是怎么解决的

不胜感激... 不胜感激 展开
 我来答
赖在梦里
2012-07-28 · TA获得超过115个赞
知道答主
回答量:106
采纳率:0%
帮助的人:112万
展开全部
下面是我解决之后总结的编程笔记。我实现的功能只是在VC++中调用一下MATLAB的一个脚本为一个文件的数据绘制了曲线,不知道你是不是要求更复杂的功能。另外我是用C++语言。
1、matlab通过mcc -B csharedlib:libname name.m指令生成动态链接库文件。主要用.lib .dll .h三个文件。(其中name是自己起的名字)
2、配置visual 2010环境:
Project----properties---configuration properties---VC++ directories
(1) 选择“可执行文件”下拉框,添加:C:\Program Files\MATLAB\R2010b\bin\win32(注意:当前的Mathlab安装在C:\Program Files下面)
(2)选择“包含文件”下拉框,添加:C:\Program Files\MATLAB\R2010b\extern\include
(3)选择“引用文件”下拉框,添加:C:\Program Files\MATLAB\R2010b\extern\lib
(4)选择“库文件”下拉框,添加:C:\Program Files\MATLAB\R2010b\extern\lib\win32\microsoft
Project----properties---configuration properties---linker----input----additional dependences
添加:libmex.lib
libmx.lib
libmat.lib
mclmcrrt.lib
libname.lib
貌似只添加最后两个就行。
3、将.lib .dll .h三个文件复制到c++工程目录下。
4、在程序头文件中写入#include "libname.h"。参考libname.h中最后对导出函数的声明形式,即输入参量个数和类型。(如果有输入输出参量,可以参考:声明公共变量时写入mxArray * pArrayIn; mxArray * pArrayOut; )。声明消息映射函数。
5、在MESSAGE_MAP里添加触发消息映射ON_COMMAND(ID_*,On*)

在程序初始化阶段(类的构造函数中)写入:mclInitializeApplication(NULL,0);
libnameInitialize();
//this->pArrayIn=NULL;
//this->pArrayOut=NULL;
在程序终止阶段(类的析构函数中)写入:if(pArrayIn)
{
mxDestroyArray(pArrayIn);
}
if(pArrayOut)
{
mxDestroyArray(pArrayOut);
}
libnameTerminate();
mclTerminateApplication();
6、在消息处理函数中调用DLL的导出函数:
例如:if(pArrayIn==NULL)
{
pArrayIn = mxCreateDoubleMatrix(1,1,mxREAL);
}
//构造一个[3 10]的随机的输入参数
*(mxGetPr(pArrayIn))=10*(0.3+0.7*rand()*1.0/RAND_MAX);
mlfSincplot(1,&pArrayOut,pArrayIn);
来自:求助得到的回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式