在r2017 b中使用C++中的startMATLAB和“MatlabEngine.hpp”的问题

wn9m85ua  于 2023-10-23  发布在  Matlab
关注(0)|答案(3)|浏览(242)

在其新版本2017 b中,Matlab发布了一个新的MATLAB Engine API for C++:https://fr.mathworks.com/help/matlab/calling-matlab-engine-from-cpp-programs.html
当我尝试使用这个API时,(只在开始时启动Matlab!!),我有一个问题使用:

std::unique_ptr<MATLABEngine> matlabPtr = startMATLAB();

编译是可以的,但在执行时:

下面是调用堆栈:
matlab::engine::initSession --> matlab::engine::startMATLAB --> matlab::engine::startMATLABASync --> engine_create_session
现在,我用不同的方式来做我的工作,但我不想让一个问题没有解决方案。有人能发现这个API的问题吗?
我的配置:

  • Matlab 2017b
  • Visual Studio 2017
  • Windows 10
axr492tv

axr492tv1#

就在几天前,我遇到了同样的问题:here
所以,我在MATLAB中提出了一张技术支持的票。他们建议以以下方式构建项目,这对我来说很有效:
1.创建一个项目并添加源文件。
1.转到项目属性,并执行以下更改(* 确保将架构更改为X64*):
1.在C/C++ General下,将以下目录添加到字段ADDITIONAL INCLUDE DIRECTORIES:C:\Program Files\MATLAB\extern\include
1.在
C/C++预编译头
下,选择 “不使用预编译头”
1.在Linker General下,将目录添加到字段**ADDITIONAL LIBRARY DIRECTORIES:C:\Program Files\MATLAB\extern\lib\win64\microsoft

  1. e.在配置属性->配置下,在环境中添加以下2个目标路径:PATH=C:\Program Files\MATLAB\bin\win64;
    PATH=C:\Program Files\MATLAB\extern\bin\win64;

    1.在Linker Input下,将以下名称添加到标记为ADDITIONAL DEPENDENCIES的字段:libmat.lib
    libMatlabEngine.lib
    libMatlabDataArray.lib

    1.确保以下目录位于
    Windows系统环境PATH**中:
  • C:\Program Files\MATLAB\bin\win64;

C:\Program Files\MATLAB\extern\bin\win64 *
1.现在,构建项目并运行应用程序。

dly7yett

dly7yett2#

就像在评论中一样,我通过将Matlab从R2017 b升级到R2018 b来解决这个问题!

hlswsv35

hlswsv353#

解决办法很简单。设置包含和库文件夹后,不要将任何dll文件复制到您自己的构建文件夹中。然后,它会工作。

相关问题