原文:http://blog.youkuaiyun.com/owldestiny/article/details/4210177
最近有朋友问我他照着我之前的一篇文章(http://blog.youkuaiyun.com/owldestiny/archive/2009/03/07/3966340.aspx )
做画图的时候画不出来图像,不知道如何解决,自己试了一下,搞定了在这里贴出来
首先matlab文件他是这样写的:
- function mfun()
- x=-10:0.1:10;
- y=sin(x);
- plot(x,y)
C++代码是:
- int main()
- {
- cout<<"test";
- drawInitialize();
- mfun();
- drawTerminate();//terminate
- return 0;
- }
C++代码最后一句建议加上system("pause");
这样如果程序运行过快最后还是能停下等待按键,就可以看到程序运行的结果;
加上之后控制台中报错为:
大致的意思就是图片在退出MCR时仍然存在,这个是不允许的,terminate时MCR就不存在了,图片也不可能继续显示,
解决的方法是将MCR存在的时间延长,可以在Matlab代码中加入延时程序或等待按键代码,我采用的是等待按键,
- function [t]=draw()
- x=-10:0.1:10;
- y=sin(x);
- figure(1)
- plot(x,y)
- hold on
- t=1;
- w=1;
- while w,
- w=waitforbuttonpress
- end
最后一行就是等待鼠标按键,w变为0,循环终止,draw函数终止,MCR退出;
C++的代码也进行了一点修改,
- #pragma comment(lib,"draw.lib")
- #include "draw.h"
- #include <iostream>
- using namespace std;
- int main()
- {
- cout<<"test";
- drawInitialize();
- short int nargout = 1;
- mwArray t(1,1,mxINT8_CLASS);
- draw(nargout, t);
- drawTerminate();//terminate
- system("pause");
- return 0;
- }
这样就可以实现了,具体代码在这里(http://download.youkuaiyun.com/source/1341025 )可以下载到,,欢迎大家与我讨论,mailto:chen0510566@163.com