问题,包括MATLAB“engine.h”为C++代码

问题描述:

我试图从运行MATLAB文件的example code,但是当我尝试建立在Visual Studio中的项目,我得到这个错误问题,包括MATLAB“engine.h”为C++代码

fatal error C1083: Cannot open include file: 'engine.h': No such file or directory 

事实是,在文档中我找不到在哪里可以找到标题链接,他们表现出的例子,好像没有必要做别的什么,只是做一下如何解决这个问题

#include "engine.h"; 

任何想法?

编辑

我解决的第一个问题,但现在我得到了一些错误reated缺少库:

1>engwindemo.obj : error LNK2019: unresolved external symbol _engClose referenced in function _main 
1>engwindemo.obj : error LNK2019: unresolved external symbol _mxGetClassName referenced in function _main 
1>engwindemo.obj : error LNK2019: unresolved external symbol _engGetVariable referenced in function _main 
1>engwindemo.obj : error LNK2019: unresolved external symbol _engOutputBuffer referenced in function _main 
1>engwindemo.obj : error LNK2019: unresolved external symbol _mxDestroyArray referenced in function _main 
1>engwindemo.obj : error LNK2019: unresolved external symbol _engEvalString referenced in function _main 
1>engwindemo.obj : error LNK2019: unresolved external symbol _engPutVariable referenced in function _main 
1>engwindemo.obj : error LNK2019: unresolved external symbol _mxGetPr referenced in function _main 
1>engwindemo.obj : error LNK2019: unresolved external symbol _mxCreateDoubleMatrix_730 referenced in function _main 
1>engwindemo.obj : error LNK2019: unresolved external symbol _engOpen referenced in function _main 

我设置Path变量如文档中说,将库路径和增加了一些图书馆,现在我不知道我还能做些什么。我还重新启动了VisualStudio,以使Path变量有效。

enter image description here 在此先感谢。

我最终解决了这个问题。我正在构建一个WIN32项目,而matlab是x64,所以VisualStudio在尝试链接64位平台时会出现错误。解决方案是将Active Solution Platform更改为x64,位于Project Properties - > Configuration Manager内。

在下面的link中有很好的解释。

无论如何答案,他们是有用的。

所以,总结,才能够编译和运行在VisualStudio2008和Matlab2010与engine.h一个C++代码,需要以下步骤:

1.-在高级系统设置 - 设置路径变量>环境变量:C:\ Program Files文件\ MATLAB \ R2010a版本\ BIN \ Win64的(或者libeng.dll所在的路径)

2:在VisualStudio中,在其他包括C的目录链接的项目属性++ - >通用: “C:\ Program Files \ MATLAB \ R2010a \ extern \ include”

3.-在项目属性,接头 - >一般情况下,附加库目录: “C:\ Program Files文件\ MATLAB \ R2010a版本\ EXTERN \ LIB \ Win64的\微软”

4.-添加在连接器 - 以下库>附加依赖: libeng.lib libmx.lib

5.-作为链接解释了活动的解决方案平台更改为64位,在配置管理器。

您是否将MATLAB include目录添加到项目的包含路径中? enter image description here。该目录应该像“C:\ Program Files \ MATLAB \ R2010a \ extern \ include”

+0

不,我会看看,谢谢 – 2012-01-10 08:37:32

+0

但是哪个是包含目录?我无法在Matlab文件夹中找到它。 – 2012-01-10 08:41:58

+2

像“C:\ Program Files \ MATLAB \ R2010a \ extern \ include” – WebMonster 2012-01-10 08:42:22

如果您忘记了,请将包含libmat.dll libmx.dll等文件夹添加到您的路径中。对我来说,那是:

C:\ Program Files文件\ MATLAB \ R2012a \ BIN \ Win64的

虽然Jav_Rock's answer是完全正确的,我想加入的要点之一的信息:

在高级系统设置 -

1.-设置路径变量>环境变量:C:\ Program Files文件\ MATLAB \ R2010a版本\ BIN \ Win64平台(或者 libeng.dll所在的路径)

我花了三个小时了解它的含义,所以我想为未来的研究人员澄清这一刻。 您需要将MATLAB Engine dll库的路径添加到Windows。 我们可以这样做:

我的电脑 - >右键单击:设置。打开的系统窗口。左下角:高级系统设置

enter image description here

高级选项卡

​​

在为您的用户按创建...按钮,添加这个环境变量: 变量名:PATH变量值:C:\ Program Files \ MATLAB \ R2016a \ bin \ win64

此路径是您的libeng.dll所在位置的参考。 重要时刻:它可能需要重新启动VS甚至重新启动计算机。