从c+连接到Matlab 2017b+;vs2013 我想从C++中读取一些变量在Matlab的值。我在互联网上搜索,在Matlab文档页面中找到了以下示例

从c+连接到Matlab 2017b+;vs2013 我想从C++中读取一些变量在Matlab的值。我在互联网上搜索,在Matlab文档页面中找到了以下示例,c++,matlab,dll,matlab-compiler,C++,Matlab,Dll,Matlab Compiler,对于使用此示例,我执行了以下步骤: 我将此包含路径添加到项目: c:\ProgramFiles\Matlab\r2017b\extern\include 然后,我添加以下路径库目录: c:\ProgramFiles\Matlab\r2017b\extern\lib\win64\microsoft 然后,我将此库添加到项目: “libMatlabEngine.lib” “libMatlabDataArray.lib” 然后我把需要的DLL放在应用程序EXE文件旁边。 然后,当运行startMATL

对于使用此示例,我执行了以下步骤:

我将此包含路径添加到项目: c:\ProgramFiles\Matlab\r2017b\extern\include

然后,我添加以下路径库目录: c:\ProgramFiles\Matlab\r2017b\extern\lib\win64\microsoft

然后,我将此库添加到项目: “libMatlabEngine.lib” “libMatlabDataArray.lib”

然后我把需要的DLL放在应用程序EXE文件旁边。 然后,当运行startMATLAB()方法时,我在应用程序遇到access violataion错误后运行了该应用程序

注意:我还有其他问题需要解决。但我认为这个问题很奇怪,也许知道这个问题能帮助你们找到我问题的主要原因

问题是:当我在环境变量中设置dll的文件路径时,我的应用程序并没有找到dll,并出现“并没有进入*.dll的入口点”运行时错误。但当我复制exe旁边的DLL时,我的应用程序看到了它们。(在更改环境变量后,我重新启动了VS2013。)

#包括“MatlabDataArray.hpp”
#包括“MatlabEngine.hpp”
#包括
void callgetVars(){
使用名称空间matlab::engine;
//同步启动MATLAB引擎
std::unique_ptr matlabPtr=startMATLAB();
//计算MATLAB语句
matlabPtr->eval(convertUTF8StringToUTF16String(“[az,el,r]=cart2sph(5,7,3);”);
//从MATLAB中得到结果
matlab::data::TypedArray result1=matlabPtr->
getVariable(convertUTF8StringToUTF16String(“az”);
matlab::data::TypedArray result2=matlabPtr->
getVariable(convertUTF8StringToUTF16String(“el”);
matlab::data::TypedArray result3=matlabPtr->
getVariable(convertUTF8StringToUTF16String(“r”);
//显示结果
标准::cout
#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;
}