您的位置:首页 > 其它

mfc 调用matalab的dll进行画图时,出不来图形

2010-08-04 16:36 176 查看
问题描述:

[我用mfc 调用matalab的dll进行画图时,出不来图形。请问是怎么回事啊

我的环境是vs 2005 matalab7.5
huatu.m函数如下:
function y= huatu(x)
y = sin(x)
plot(x,y);
end

MFC处理主要函数如下:

void CmyaddmfcDlg::OnBnClickedButton1()
{
// TODO: 在此添加控件通知处理程序代码

if( !mclInitializeApplication(NULL,0) )

{
AfxMessageBox(_T("Could not initialize the application!"));
return ;
}

if( !libhuatuInitialize())

{
AfxMessageBox(_T("Could not initialize libmyadd2!"));
return ;
}

mwArray a(1, 10, mxDOUBLE_CLASS);
double *aData;
aData = new double[10];
for(int i=0; i<10; ++i)
{
aData = 1.0*i;
}
a.SetData(aData, 10);
mwArray b(1, 10, mxDOUBLE_CLASS);
huatu(1,b,a);
libhuatuTerminate();
mclTerminateApplication();
}
我的环境变量设置等 应该没有问题。因为我执行win32控制台程序是成功的。就是mfc画图总是不成功!!
求帮助!执行的时候,貌似有一个窗口闪过,然后就没了。然后重新执行,就会出现初始化错误提示!

问题解决:

别人:

从给出的程序来看,以及lz看到貌似有个窗口一闪而过,那时因为程序在执行过程中的确画出图了,可是关掉的太快了(通过调用libhuatuTerminate())。

解决的办法就是把对我们的DLL库的初始化和关闭分别放到程序别的地方,不要放到按钮响应函数里,通常可以吧初始化代码放到OnInitialDialog或者其他合适的地方,而把关闭库的代码放到OnClose或者其他合适的地方,这样按钮的响应函数只做画图,这样也显得有点条理。

我:

将初始化代码放在initinstance();

关闭库的代码放到existinstance();
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: