C++代码中涉及MATLAB的"engine.h"问题

10

我试图运行MATLAB文档中的示例代码,但是在尝试在Visual Studio中构建项目时,我遇到了这个错误

fatal error C1083: Cannot open include file: 'engine.h': No such file or directory
事实上,在文档中我找不到如何找到标题以进行链接,他们展示示例好像不需要做任何其他事情,只需执行

#include "engine.h";

有没有关于如何解决这个问题的想法?

编辑

我解决了第一个问题,但现在我遇到一些与缺少库相关的错误:

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

我根据文档的要求设置了路径变量,设置了库路径并添加了一些库,现在我不知道还能做什么。为了使路径变量生效,我也重新启动了VisualStudio。

在此输入图片描述 提前致谢。

4个回答

12

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

在以下链接中有很好的解释。

无论如何,感谢回答,它们很有用。

因此,总结一下,在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\microsoft"

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

5.- 如链接中所述,在Configuration Manager中将Active Solution Platform更改为x64。


2

您是否将MATLAB的include目录添加到项目的include路径中? 目录应该像“C:\ Program Files \ MATLAB \ R2010a \ extern \ include”这样。

enter image description here

但是哪个是包含目录呢?我在Matlab文件夹中找不到它。 - Jav_Rock
2
例如:"C:\Program Files\MATLAB\R2010a\extern\include" - WebMonster

0

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

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


0

虽然Jav_Rock's answer是完全正确的,但我想添加有关其中一点的信息:

1.- 在高级系统设置->环境变量中设置路径变量:C:\Program Files\MATLAB\R2010a\bin\win64(或libeng.dll所在的路径)

我花了三个小时才理解这意味着什么,所以我想为未来的研究人员澄清这一点。 您需要将MATLAB引擎dll库的路径添加到Windows中。我们可以这样做:

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

enter image description here

高级选项卡

enter image description here

在您的用户环境变量中,按“创建...”按钮并添加以下内容: 变量名称:PATH 变量值:C:\Program Files\MATLAB\R2016a\bin\win64 此路径是指示您的libeng.dll位于何处的参考路径。 重要提示:可能需要重新启动VS甚至重新启动计算机。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接