- 积分
- 0
- 注册时间
- 2009-10-8
- 仿真币
-
- 最后登录
- 1970-1-1
|
本帖最后由 tiantian0 于 2009-10-14 21:39 编辑
vc调用matlab生成图片却只是一闪而过!(附源程序)m文件如下:利用mcc命令生成动态链接库文件,添加入MFC对话框按钮代码中,
function [y,z] = myadd2(a, b)
y = a+b;
z = a+2*b;
x=0.1:0.01:2*pi;
t=sin(x);
plot(x,t)
hold
end
vc(MFC)代码如下:
void CTestmyadd2_r2007bDlg::OnButton()
{ /**//* Initialize the MCR */
/* if( !mclInitializeApplication(NULL,0) )
{ MessageBox( "Ó¦ÓÃÎÞ·¨³õʼ»¯£¬Çë²éÕÒÔ Òò£¡" );}
// initialize lib
if( !)
{ MessageBox( "ÎÞ·¨½øÐгÌÐòµÄµ÷Óã¬Çë²éÕÒÔ Òò!" );} */
libmyadd2Initialize();
try
{
// declare and initialize a
mwArray a(2, 2, mxDOUBLE_CLASS);
double *aData;
aData = new double[4];
int i;
for( i=0; i<4; ++i)
{
aData = 1.0*i;
}
a.SetData(aData, 4);
// declare and initialize b
mwArray b(2, 2, mxDOUBLE_CLASS);
b(1,1) = 11.;
b(1,2) = 12.;
b(2,1) = 21.;
b(2,2) = 22.;
mwArray y(2, 2, mxDOUBLE_CLASS);
mwArray z(2, 2, mxDOUBLE_CLASS);
// call the function
myadd2(2, y, z, a, b);
// allocate outputs
double *yData, *zData;
yData = new double[4];
if( yData == NULL )
{
MessageBox( "Failed to allocate memory for yData!" );
}
zData = new double[4];
if( zData == NULL )
{
MessageBox( "Failed to allocate memory for zData!" );
}
// copy data from mwArray to C++
y.GetData(yData, 4);
z.GetData(zData, 4);
// print output
double n,m;
n=y(1,1);
m=z(1,2);
SetDlgItemInt(IDC_EDIT1,n);
SetDlgItemInt(IDC_EDIT2,m);
UpdateData(FALSE);
// deallocate memory
delete [] aData;
delete [] zData;
delete [] yData;
}
catch( const mwException& e)
{
MessageBox("eror!");
}
// terminate the lib
libmyadd2Terminate();
// terminate MCR
mclTerminateApplication();
}
结果是程序运行慢,并且图片一闪而过,再次点击按钮,则显示无法初始化!
请问这是什么问题,如何解决? |
|