在其新版本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
3条答案
按热度按时间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
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\extern\bin\win64 *
1.现在,构建项目并运行应用程序。
dly7yett2#
就像在评论中一样,我通过将Matlab从R2017 b升级到R2018 b来解决这个问题!
hlswsv353#
解决办法很简单。设置包含和库文件夹后,不要将任何dll文件复制到您自己的构建文件夹中。然后,它会工作。