我在vc++的对话框中希望调用Matlab引擎来画图。主要程序如下:
void CMatlabTextDlg::OnButton1()
{
Engine *ep;
if(!(ep=engOpen(NULL)))
MessageBox("Can' start the MATLAB engine","VC调用matlab engine示例程序",MB_OK);
double x[70];
for (int i=0;i<=69;i++)
{
x[i]=i;
}
mxArray *xx=mxCreateDoubleMatrix(1,70,mxREAL);
mxArray *yy=mxCreateDoubleMatrix(1,70,mxREAL);
memcpy(mxGetPr(xx), x, 70*sizeof(double)); //将数组x复制到mxarray数组xx中。
memcpy(mxGetPr(yy), y, 70*sizeof(double)); //将数组x复制到mxarray数组yy中。
engPutVariable(ep, "xx",xx); //将mxArray数组xx写入到Matlab工作空间,命名为xx。
engPutVariable(ep, "yy",yy); //将mxArray数组yy写入到Matlab工作空间,命名为yy。 // 向Matlab引擎发送画图命令。plot为Matlab的画图函数,参见Matlab相关文档。
engEvalString(ep, "plot(xx, yy); ");
mxDestroyArray(xx); //销毁mxArray数组xx和yy。
mxDestroyArray(yy);
engClose(ep);
}
void CMatlabTextDlg::LoadData()
{
CString StrFileName="VFCurveFile1.vf";
CStdioFile MyFile;
MyFile.Open(StrFileName,CFile::modeRead);
CString Str;
for (int i=0;i<=69;i++)
{
MyFile.ReadString(Str);
y[i]=(float)atof(Str);
}
}
编译没问题,但链接时出现如下问题:
Linking...
MatlabTextDlg.obj : error LNK2001: unresolved external symbol _mxDestroyArray
MatlabTextDlg.obj : error LNK2001: unresolved external symbol _mxGetPr
MatlabTextDlg.obj : error LNK2001: unresolved external symbol _mxCreateDoubleMatrix
Debug/MatlabText.exe : fatal error LNK1120: 3 unresolved externals
Error executing link.exe.
MatlabText.exe - 4 error(s), 0 warning(s)我不知道这是怎么回事,不知道该如何解决了,望各位帮帮忙,谢谢!
void CMatlabTextDlg::OnButton1()
{
Engine *ep;
if(!(ep=engOpen(NULL)))
MessageBox("Can' start the MATLAB engine","VC调用matlab engine示例程序",MB_OK);
double x[70];
for (int i=0;i<=69;i++)
{
x[i]=i;
}
mxArray *xx=mxCreateDoubleMatrix(1,70,mxREAL);
mxArray *yy=mxCreateDoubleMatrix(1,70,mxREAL);
memcpy(mxGetPr(xx), x, 70*sizeof(double)); //将数组x复制到mxarray数组xx中。
memcpy(mxGetPr(yy), y, 70*sizeof(double)); //将数组x复制到mxarray数组yy中。
engPutVariable(ep, "xx",xx); //将mxArray数组xx写入到Matlab工作空间,命名为xx。
engPutVariable(ep, "yy",yy); //将mxArray数组yy写入到Matlab工作空间,命名为yy。 // 向Matlab引擎发送画图命令。plot为Matlab的画图函数,参见Matlab相关文档。
engEvalString(ep, "plot(xx, yy); ");
mxDestroyArray(xx); //销毁mxArray数组xx和yy。
mxDestroyArray(yy);
engClose(ep);
}
void CMatlabTextDlg::LoadData()
{
CString StrFileName="VFCurveFile1.vf";
CStdioFile MyFile;
MyFile.Open(StrFileName,CFile::modeRead);
CString Str;
for (int i=0;i<=69;i++)
{
MyFile.ReadString(Str);
y[i]=(float)atof(Str);
}
}
编译没问题,但链接时出现如下问题:
Linking...
MatlabTextDlg.obj : error LNK2001: unresolved external symbol _mxDestroyArray
MatlabTextDlg.obj : error LNK2001: unresolved external symbol _mxGetPr
MatlabTextDlg.obj : error LNK2001: unresolved external symbol _mxCreateDoubleMatrix
Debug/MatlabText.exe : fatal error LNK1120: 3 unresolved externals
Error executing link.exe.
MatlabText.exe - 4 error(s), 0 warning(s)我不知道这是怎么回事,不知道该如何解决了,望各位帮帮忙,谢谢!
现在的另一个问题是能不能调用matlab引擎同时画多个图?
Linking...
LINK : warning LNK4044: unrecognized option "del"; ignored
MexFunction.obj : error LNK2001: unresolved external symbol _mxGetPr
MexFunction.obj : error LNK2001: unresolved external symbol _mxCreateDoubleMatrix_730
Debug/MexFunction.dll : fatal error LNK1120: 2 unresolved externals
执行 link.exe 时出错.MexFunction.dll - 1 error(s), 0 warning(s)