Issu使用C ++中的startMATLAB和#34; MatlabEngine.hpp"在r2017b

时间:2017-12-07 10:36:25

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

在新版2017b中,Matlab发布了一个新的C ++ MATLAB Engine API:https://fr.mathworks.com/help/matlab/calling-matlab-engine-from-cpp-programs.html

当我尝试使用此API时,(仅在开始时启动Matlab !!),我遇到了一个问题:

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

编译没问题,但在执行时:

enter image description here

这是调用堆栈:

  

matlab :: engine :: initSession - &gt; matlab :: engine :: startMATLAB - &gt;   matlab :: engine :: startMATLABAsync - &gt; engine_create_session

现在,我用不同的方式来完成我的工作,但我不想在没有解决方案的情况下解决问题。有人能用这个API发现问题吗?

我的配置:

  • Matlab 2017b
  • Visual Studio 2017
  • Windows 10

3 个答案:

答案 0 :(得分:1)

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

因此,我已经在MATLAB中获得了一张技术支持票。他们建议按照以下对我有用的方式构建项目:

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

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

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

答案 1 :(得分:1)

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

答案 2 :(得分:0)

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

在R2020a上正常运行时,R2020b在运行时发生运行时错误

std :: unique_ptr matlabPtr = startMATLAB();