利用matlab引擎与c++混合编程执行时出现问题

voidCMyproDlg::OnOK(){//TODO:AddextravalidationhereCStringname;CStringsuanzi;UpdateDa... void CMyproDlg::OnOK()
{
// TODO: Add extra validation here
CString name;
CString suanzi;
UpdateData(true);
char name1[20]={0};
char suanzi1[20]={0};
char szTemp[100]={0};
for(int i=0;i<=name.GetLength()-1;i++)
{
name1[i]=name.GetAt(i);
}
name1[i]='\0';
for(int j=0;j<=suanzi.GetLength()-1;j++)
{
suanzi1[j]=suanzi.GetAt(j);
}
suanzi1[j]='\0';
Engine *ep;
if(!(ep=engOpen(NULL)))
{
fprintf(stderr,"\nCan not start Matlab engine\n");
return;
}
mxArray *t=NULL;
mxArray *s=NULL;
t=mxCreateString(name1);
s=mxCreateString(suanzi1);
engPutVariable(ep,"t",t);
engPutVariable(ep,"s",s);
strcpy(szTemp,"l=imread('");
strcat(szTemp,name1);
strcat(szTemp,"');");
engEvalString(ep,szTemp);
engEvalString(ep,"k=rgb2gray(l);");
engEvalString(ep,"imshow(k);");
strcpy(szTemp,"bw=edge(k,'");
strcat(szTemp,suanzi1);
strcat(szTemp,"');");
engEvalString(ep,szTemp);
engEvalString(ep,"figure;");
engEvalString(ep,"imshow(bw);");
mxDestroyArray(t);
mxDestroyArray(s);
engClose(ep);

// CDialog::OnOK();
}
代码没有错,就是不知道为什么执行的时候执行结果是一闪而过。
请问怎样才可以停留执行结果界面。

若能很好解决问题,我会追加分的!!先谢谢啦
展开
 我来答
dao_er
2010-02-28 · TA获得超过716个赞
知道小有建树答主
回答量:466
采纳率:0%
帮助的人:0
展开全部
晕死,整了半天才发现问题。我也弄了个程序来试试到底是不是分号的问题,其实肯定不是engEvalString(ep,"imshow(bw);"); 显示图片应该不会与分号有关吧,弄了半天才发现罪恶的 engClose(ep); 你把引擎都关了,所有的显示当然也关掉了啊。所以开始是显示了图片,但执行到后面把引擎关了,图片也就关了。
你可以在其他地方关引擎,比如程序退出的时候。
恒光流星
2010-02-28 · TA获得超过215个赞
知道答主
回答量:111
采纳率:0%
帮助的人:111万
展开全部
把你需要的结果的地方的语句的分号去掉就能显示了,matlab默认分号是不显示结果后台运算。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式