|
<>各位大侠:<BR> 我正在尝试C++Builder与matlab混合编程,但发现了一些问题,一直解决不了,请各位大侠指点指点,在下感激不禁!!!<BR> 我是在C++Builder 5 中应用matlab engine进行matlab函数调用的,在头文件中添加了Engine.h的引用,并进行了Project|Option路径的相关设置,以及用Implib将_libeng.def、_libmx.def和_libmat.def分别生成了*.lib文件,放在文件目录下,并在Add to Project。<BR> 在C++Builder的Form1中添加一按钮,其代码如下:<BR> void __fastcall TForm1::Button1Click(TObject *Sender)<BR> { <BR> Engine *eng;<BR> char buffer[256];<BR> int array[6]={1,2,3,4,5,6};<BR> mxArray *s=NULL;<BR> mxArray *t=NULL;<BR> <BR> if (!(eng = engOpen("\0"))) {<BR> fprintf(stderr, "\nCan't start MATLAB engine\n");<BR> exit(-1);<BR> }<BR> s=mxCreateDoubleMatrix(1,6,mxREAL);<BR> mxSetName(s,"s");<BR> memcpy((void *)mxGetPr(s),(void *)array,sizeof(array)); //好象问题就出在这行, 值传不进Matlab工作空间<BR> engPutArray(eng,s);<BR> engEvalString(eng,"s=s*2;");<BR> engEvalString(eng,"t=1:6;");<BR> engEvalString(eng,"plot(t,s);");<BR> engEvalString(eng, "close;");<BR> engClose(eng);<BR> mxDestroyArray(s);<BR> mxDestroyArray(t);<BR> }<BR><BR> 运行结果:matlab中画板是一片灰色,没有任何数据图形。<BR> 请高手指点,谢谢!</P> |
|