连接c++运行MATLAB会话
您可以连接共享MATLAB c++引擎®在本地机器上运行的会话。连接到一个共享的MATLAB会话:
开始MATLAB作为共享会话,或使一个MATLAB运行过程共享使用
matlab.engine.shareEngine
MATLAB函数。找到的名字使用MATLAB共享会话
matlab:引擎::findMATLAB
或matlab:引擎::findMATLABAsync
。通过一项
matlab::引擎::字符串
包含共享MATLAB会议的名称matlab:引擎::connectMATLAB
或matlab:引擎::connectMATLABAsync
成员函数。这些函数将c++引擎连接到共享会话。
如果你不指定共享会话当调用MATLAB的名字matlab:引擎::connectMATLAB
或matlab:引擎::connectMATLABAsync
,第一共享MATLAB引擎使用会话创建。如果没有可用MATLAB会话共享,MATLAB引擎创建一个共享会话和连接到此会话。
如何设置和信息构建c++引擎项目,明白了要求构建c++引擎项目。
连接到共享MATLAB
此示例代码连接到第一个共享MATLAB会话。
# include“MatlabEngine.hpp”
空白syncConnect(){使用名称空间matlab::引擎;/ /连接到共享MATLAB会话std:: unique_ptr < MATLABEngine > matlabPtr = connectMATLAB ();}
连接到共享MATLAB异步
此示例代码连接到第一个共享MATLAB异步会话发现。
# include“MatlabEngine.hpp”
空白asyncConnect(){使用名称空间matlab::引擎;/ /找到并连接到共享MATLAB会话FutureResult < std:: unique_ptr < MATLABEngine > > futureMATLAB = connectMATLABAsync ();…std:: unique_ptr < MATLABEngine > matlabPtr = futureMATLAB.get ();}
指定名称的共享会话
您可以指定共享的名称MATLAB会话时执行matlab.engine.shareEngine
MATLAB函数。这样就不需要使用matlab:引擎::findMATLAB
或matlab:引擎::findMATLABAsync
找到这个名字。
例如,开始用MATLAB和名称共享会话myMatlabEngine
。
matlab - r”matlab.engine.shareEngine (myMatlabEngine)”
此示例代码连接到MATLAB会话命名myMatlabEngine
从c++。
请注意
启动名为MATLAB会话连接从c++代码之前。
# include“MatlabEngine.hpp”
空白connectToML(){使用名称空间matlab::引擎;/ /连接到命名共享MATLAB会话开始:/ / MATLAB - r”matlab.engine.shareEngine (myMatlabEngine)“std:: unique_ptr < MATLABEngine > matlabPtr = connectMATLAB (u“myMatlabEngine”);}
找到并连接到指定的共享会话
连接到一个名为MATLAB共享会话,使用matlab:引擎::findMATLAB
或matlab:引擎::findMATLABAsync
找到所有可用的名字命名MATLAB共享会话。
此示例代码试图找到一个MATLAB共享会话命名myMatlabEngine
如果发现会话连接。
空白findNConnect(){使用名称空间matlab::引擎;/ /找到并连接到共享MATLAB会话std:: unique_ptr < MATLABEngine > matlabPtr;std::向量<字符串>名称= findMATLAB ();std::向量<字符串>::迭代器;它= std::找到(names.begin (), names.end (), u“myMatlabEngine”);如果(它! = names.end ()) {matlabPtr = connectMATLAB (*);}/ /确定如果引擎连接(matlabPtr) {matlab::数据::ArrayFactory工厂;matlab::数据::CharArray arg = factory.createCharArray(“释放”);matlab::数据::CharArray version = matlabPtr - >函数宏指令(u“版本”,arg);std:: cout < <”连接到:“< < version.toAscii () < < std:: endl; } else { std::cout << "myMatlabEngine not found" << std::endl; } }
在多头螺纹连接的环境
你可以让这些连接在多头螺纹环境中MATLAB会话共享:
单独的线程的连接到不同的MATLAB会话共享一个c++应用程序。
连接到一个MATLAB从多个引擎应用程序会话。
你不能使用同一进程的多个线程连接到一个共享MATLAB会话。
另请参阅
matlab:引擎::findMATLAB
|matlab:引擎::findMATLABAsync
|matlab.engine.shareEngine
|matlab:引擎::connectMATLAB
|matlab:引擎::connectMATLABAsync