从c ++ vs2013连接到Matlab 2017b

时间:2017-12-26 11:17:30

标签: c++ matlab dll matlab-compiler

我想从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。 谢谢你的帮助。

0 个答案:

没有答案