Matlab 版 (精华区)

发信人: bage (醍醐灌顶@洗心革面), 信区: Matlab
标  题: VC++调用MATLAB Engine
发信站: 哈工大紫丁香 (2001年04月13日11:10:45 星期五), 站内信件


   实验环境: Pwin98, MATLAB5.3, Visual C++ 6.0 SP3
   1 生成几个连接库文件
   在目录 c:\matlab\extern\include 下找这几个文件:
   libeng.def libmx.def libmat.def
   在DOS行命令下生成三个库文件:
   c:\msdev\bin\lib /def:libmat.def /out:libmat.lib
   c:\msdev\bin\lib /def:libeng.def /out:libeng.lib
   c:\msdev\bin\lib /def:libmx.def /out:libmx.lib
   把生成的三个LIB文件加入你的LINK项
   libeng.lib libmx.lib libmat.lib
   2 写包含engine功能的文件
   可以参考:
   c:\matlab\extern\examples\eng_mat\engwindemo.c
   注意: 可以用.CPP做后缀. 比如:MATLAB.CPP
   3 设置编译选项
   把MATLAB.C加入你的PROJECT
   MATLAB.C的开头加入两行:
   #INCLUDE "stdafx.h"
   #INCLUDE "engine.h"
   包含其它头文件, 自己看情况而定
   4 编写调用engine的函数
   比如响应菜单调用自己的函数matlabPlot,而此函数的实现在matlab.cpp文件中实现
,内容如下:
   #include "stdafx.h"
   #include "engine.h"
   int MatlabDraw()
   {
   Engine *ep;
   if (!(ep = engOpen(NULL))) {
   MessageBox ((HWND)NULL,"Can't start MATLAB engine","Matlab Draw",MB_OK);
   return 0;
   }
   engEvalString(ep, "x=0:0.01:2*pi;y=sin(x);plot(x,y);");
   engEvalString(ep, "title('Matlab Drawing');");
   engEvalString(ep, "xlabel('X');");
   engEvalString(ep, "ylabel('Y');");
   MessageBox(NULL, "Press any key …","MATLAB Draw",MB_OK);
   engClose(ep);
   return 1;
   }
   5 设置其它编译连接选项
   PreProcessor 加上: MATLAB_MEX_FILE
   INCLUDE 加上: c:\matlab\extern\include
   LIB 加上: c:\matlab\extern\include
   最后,如果有必要的话,在DOS命令行运行: MATLAB /regserver

--
                     
           ooooO    Ooooo      *********************************
           (    )   (    )     #    大肚能容,容天下难容之事    #  
            \  (     )  /      #    开口便笑,笑世间可笑之人    #
             \  )   (  /       *********************************
              ~~     ~~

※ 来源:·哈工大紫丁香 bbs.hit.edu.cn·[FROM: bage.hit.edu.cn]
[百宝箱] [返回首页] [上级目录] [根目录] [返回顶部] [刷新] [返回]
Powered by KBS BBS 2.0 (http://dev.kcn.cn)
页面执行时间:3.350毫秒