在 C++ 中使用 startMATLAB 并在 r2017b 中使用“MatlabEngine.hpp”

问题描述 投票:0回答:4

在新版本 2017b 中,Matlab 发布了适用于 C++ 的新 MATLAB 引擎 API: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
c++ matlab visual-studio-2017 matlab-engine
4个回答
1
投票

几天前,我遇到了同样的问题:这里

因此,我在 MATLAB 中提出了请求技术支持的请求。他们建议按照以下对我有用的方式构建项目:

  1. 创建项目并添加源文件。
  2. 转到项目属性,然后进行以下更改(确保将体系结构更改为 X64):
  3. C/C++ General 下,将以下目录添加到字段中 其他包含目录: C:\Program Files\MATLAB\extern\include
  4. C/C++ 预编译头下,选择 “不使用预编译” 标题”.
  5. 链接器常规下,将目录添加到字段附加 库目录: C:\Program 文件\MATLAB\extern\lib\win64\microsoft
  6. e。在配置属性->调试下添加以下2 环境中的目标路径:PATH=C:\Program 文件\MATLAB\bin\win64;
    PATH=C:\Program 文件\MATLAB\extern in\win64;
  7. 链接器输入下,将以下名称添加到标记为附加依赖项的字段中: libmat.lib
    libMatlabEngine.lib
    libMatlabDataArray.lib

  8. 确保Windows系统中有以下目录 环境路径:
    C:\Program Files\MATLAB\bin\win64;
    C:\Program Files\MATLAB\extern in\win64

  9. 现在,构建项目并运行您的应用程序。


1
投票

就像评论中一样,我通过将Matlab从R2017b升级到R2018b解决了这个问题!


0
投票

我在测试 R2020b 时注意到同样的问题

虽然在 R2020a 上运行良好,但在 R2020b 上运行时出现运行时错误

std::unique_ptr matlabPtr = startMATLAB();


0
投票

最好的解决方案非常简单。设置包含和库文件夹后,请勿将任何 dll 文件复制到您自己的构建文件夹中。然后,它就会起作用。

© www.soinside.com 2019 - 2024. All rights reserved.