我在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)我不知道这是怎么回事,不知道该如何解决了,望各位帮帮忙,谢谢!

解决方案 »

  1.   

    需要说明的是我用的Matlab为7.0的。
      

  2.   

    问题解决了。
    现在的另一个问题是能不能调用matlab引擎同时画多个图?
      

  3.   

    问下问题怎么解决的?我也出现类似问题……
    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)