怎样在C/C++语言里调用Matlab Engine
Windows下调用Matlab引擎要做好以下三点设置
(1) 设置头文件目录
(2) 设置库文件目录,并添加链接库输入项libeng.lib和libmx.lib
(3) 设置环境变量
以下以Visual Studio 2008为例来说明如何设置这三点:
1、添加头文件目录
依次选择:“工具”->“选项”,调出对话框后
再在对话框左边“选择项目和解决方案”->“VC++目录”
然后在右边选择“显示以下内容的目录”下的选框选择“包含文件”,再在目录列表的最下边空行处选中添加:matlab安装目录下的\extern\include路径比如我的是:C:\Program
Files\MATLAB\R2011a\extern\include
如果现在生成项目,链接将不会通过,比如可能会出现:
1>engwindemo.obj : error LNK2019:
无法解析的外部符号_mxDestroyArray,该符号在函数_WinMain@16 中被引用
1>engwindemo.obj : error LNK2019:
无法解析的外部符号_mxGetPi,该符号在函数_WinMain@16 中被引用
1>engwindemo.obj : error LNK2019:
无法解析的外部符号_engClose,该符号在函数_WinMain@16 中被引用
等链接错误;这就需要设置下面的库文件目录
2、添加库文件目录
在刚才调出来的对话框中,设置库目录:选择“显示以下内容的目录”下的选框选择“库文件”添加matlab目录下的
C:\Program
Files\MATLAB\R2011a\extern\lib\win32\microsoft
注意:如果是项目要生成的是64位程序那么应该选择的是
C:\Program
Files\MATLAB\R2011a\extern\lib\win64\microsoft
点击确定退出对话框,然后给项目添加链接库输入项:
在解决方案资源管理器里选择对应的项目单机右键选择最下面的“属性”弹出属性对话框,在右边依次选择“配置属性”->“链接器”->“输入”,然后在右边“附加依赖项”那一项加上libeng.lib
libmx.lib
单击确定退出
注意:
(1) 不要删除原有的依赖项
(2) 依赖项之间用空格隔开
做到这一步时生成时就没问题出现了,但是运行程序时会出现“因为计算机中丢失libeng.dll”等类似问题
第(3)步就解决这个问题的。
(3)添加可执行文件目录
设置系统环境变量:把C:\Program
Files\MATLAB\R2011a\bin\win32;添加到PATH里边(如果是64位系统则添加C:\Program
Files\MATLAB\R2011a\bin\win64)。
在Win7下具体可以这样做:在桌面上选择“计算机”图标,右键弹出选单,在其中选择“属性”,然后在弹出的窗口中选中左边的高级系统设置,在属性对话框里选择“高级”选项卡,载选择“环境变量”,在新对话框里的系统环境下边找到PATH这一项选中,然后编辑,在后边添加
C:\Program Files\MATLAB\R2011a\bin\win32;
64位系统选择
C:\Program Files\MATLAB\R2011a\bin\win64;
注意:不要删除PATH里原有的其他路径
如果设置环境变量前打开了visual studio ,那么需要重启visual studio。
完成这三步,那么祝贺你,现在已经大功告成了!
来看看C/C++程序调用matlab的效果吧!
实际上,通过引擎方式建立的对话,是将Matlab以ActiveX控件方式启动的。在Matlab初次安装时,会自动执行一次:matlab /regserver将自己在系统的控件库中注册。如果因为特殊原因,无法打开Matlab引擎,可以在Dos命令提示符后执行上述命令,重新注册。