我想从c ++中读取matlab中的一些变量值。我在Internet上搜索并在Matlab Documentation Page中找到了以下示例。
使用这个例子我做了以下步骤:
我添加这个包含项目的路径: c:\ program files \ Matlab \ r2017b \ extern \ include
然后我添加此路径库目录: c:\ program Files \ Matlab \ r2017b \ extern \ lib \ win64 \ microsoft
然后我将此库添加到项目中: " libMatlabEngine.lib" " libMatlabDataArray.lib"
然后我在应用程序EXE文件旁边放置了所需的DLL。 当 startMATLAB()方法已经运行时,我在该应用程序遇到访问违规错误后运行应用程序。
注意:我有其他问题,我解决了它。但我觉得这个问题很奇怪,可能知道这个问题可以帮助你找到问题的主要原因。
问题是:当我在环境变量中设置dll的文件路径时,我的应用程序找不到dll并且没有进入* .dll"运行时错误。但是当我在exe旁边复制dll时,我的应用程序看到了它们。(我在更改环境变量后重新启动了VS2013。)
#include "MatlabDataArray.hpp"
#include "MatlabEngine.hpp"
#include <iostream>
void callgetVars() {
using namespace matlab::engine;
// Start MATLAB engine synchronously
std::unique_ptr<MATLABEngine> matlabPtr = startMATLAB();
// Evaluate MATLAB statement
matlabPtr->eval(convertUTF8StringToUTF16String("[az,el,r] = cart2sph(5,7,3);"));
// Get the result from MATLAB
matlab::data::TypedArray<double> result1 = matlabPtr->
getVariable(convertUTF8StringToUTF16String("az"));
matlab::data::TypedArray<double> result2 = matlabPtr->
getVariable(convertUTF8StringToUTF16String("el"));
matlab::data::TypedArray<double> result3 = matlabPtr->
getVariable(convertUTF8StringToUTF16String("r"));
// Display results
std::cout << "az: " << result1[0] << std::endl;
std::cout << "el: " << result2[0] << std::endl;
std::cout << "r: " << result3[0] << std::endl;
}
我在Windows 7中使用vs2013和Matlab 2017b。 谢谢你的帮助。