10

我正在尝试从 MATLAB Doc 运行示例代码,但是当我尝试在 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

我按照文档中的说明设置了 Path 变量,设置了 lib 路径并添加了一些库,现在我不知道还能做什么。我还重新启动了 VisualStudio,以使 Path 变量更改生效。

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

4

4 回答 4

12

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

以下链接对此进行了很好的解释。

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

因此,总而言之,为了能够在 VisualStudio2008 和 Matlab2010 中使用 engine.h 编译和运行 c++ 代码,需要执行以下步骤:

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

2.- 在 VisualStudio 的项目属性中,链接到 C++ 的 Additional Include 目录->General: “C:\Program Files\MATLAB\R2010a\extern\include”

3.- 在项目属性中,链接器->常规,附加库目录: “C:\Program Files\MATLAB\R2010a\extern\lib\win64\microsoft”

4.- 在 Linker->Additional Dependencies 添加以下库: libeng.lib libmx.lib

5.- 在配置管理器中将活动解决方案平台更改为 x64,如链接中所述。

于 2012-01-10T10:54:03.393 回答
2

您是否已将 MATLAB 包含目录添加到项目的包含路径中? 在此处输入图像描述. 该目录应类似于“C:\Program Files\MATLAB\R2010a\extern\include”

于 2012-01-10T08:36:48.590 回答
0

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

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

于 2014-09-30T15:09:10.460 回答
0

虽然Jav_Rock 的回答是完全正确的,但我想添加关于其中一点的信息:

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

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

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

在此处输入图像描述

高级选项卡

在此处输入图像描述

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

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

于 2017-08-09T13:57:58.270 回答