在新版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();
编译没问题,但在执行时:
这是调用堆栈:
matlab :: engine :: initSession - &gt; matlab :: engine :: startMATLAB - &gt; matlab :: engine :: startMATLABAsync - &gt; engine_create_session
现在,我用不同的方式来完成我的工作,但我不想在没有解决方案的情况下解决问题。有人能用这个API发现问题吗?
我的配置:
答案 0 :(得分:1)
几天前,我遇到了同样的问题:here
因此,我已经在MATLAB中获得了一张技术支持票。他们建议按照以下对我有用的方式构建项目:
在链接器输入下,将以下名称添加到标记为附加依赖项”的字段中:
libmat.lib
libMatlabEngine.lib
libMatlabDataArray.lib
确保以下目录位于 Windows系统中
环境PATH :
C:\ Program Files \ MATLAB \\ bin \ win64;
C:\ Program Files \ MATLAB \\ extern \ bin \ win64
现在,构建项目并运行您的应用程序。
答案 1 :(得分:1)
就像在评论中一样,我通过将Matlab从R2017b升级到R2018b解决了这个问题!
答案 2 :(得分:0)
我注意到在测试R2020b时存在相同的问题
在R2020a上正常运行时,R2020b在运行时发生运行时错误
std :: unique_ptr matlabPtr = startMATLAB();