问题包括MATLAB" engine.h"用于C ++代码

时间:2012-01-10 08:35:29

标签: c++ visual-studio-2010 matlab matlab-engine

我正在尝试从MATLAB Doc运行example code,但是当我尝试在Visual Studio中构建项目时,我收到此错误

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

事实是,在Doc中我无法找到链接它的标题的位置,它们显示示例好像没有必要做任何其他事情,只需要做

#include "engine.h";

有关如何解决此问题的任何想法?

修改

我解决了第一个问题,但现在我得到一些错误依赖于缺少的libs:

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变量,设置了lib路径并添加了一些库,现在我不知道我还能做什么。我还重新启动了VisualStudio,以使Path变量有效。

enter image description here 提前谢谢。

3 个答案:

答案 0 :(得分:12)

我最终解决了这个问题。我正在构建一个WIN32项目,而matlab是x64,因此当您尝试链接64位平台时,VisualStudio会出错。解决方案是将Active Solution Platform更改为x64,在Project Properties中 - >配置管理器。

以下link对此进行了详细解释。

无论如何,谢谢你的答案,它们很有用。

总而言之,为了能够使用engine.h在VisualStudio2008和Matlab2010中编译和运行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 \ microsoft”

4.-在Linker->附加依赖项中添加以下库: 的 libeng.lib libmx.lib

5.-按照链接中的说明,在Configuration Manager中将Active Solution Platform更改为x64。

答案 1 :(得分:2)

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

答案 2 :(得分:0)

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

  

C:\ Program Files \ MATLAB \ R2012a \ bin \ win64