Main Content

mexhost

为 C++ MEX 函数创建主机进程

说明

示例

mh = mexhost 创建用于运行 C++ MEX 函数的 MEX 主机进程。默认进程名称是 MATLABMexHost

使用返回的 matlab.mex.MexHost 对象的 feval 方法在 MEX 主机进程中执行 C++ MEX 函数。

示例

mh = mexhost("EnvironmentVariables",envVariables) 使用在 envVariables 中定义的值来为进程设置环境变量。

示例

全部折叠

创建一个主机进程,并在该进程中运行 C++ MEX 函数。

arrayProduct.cpp C++ MEX 文件包含一个函数的源代码,该函数将数组乘以标量输入并返回生成的数组。打开此文件,并将其保存在 MATLAB® 路径上。使用 mex 命令编译 C++ MEX 源文件。要设置 MEX 编译,请按照编译 C++ MEX 程序中的说明进行操作。

mex arrayProduct.cpp

创建一个主机进程。mexhost 函数返回 matlab.mex.MexHost 对象。

mh = mexhost;

使用 matlab.mex.MexHost 对象的 feval 方法在主机进程中计算 C++ MEX 函数。

result = feval(mh,"arrayProduct",10,[2,4,6,8])
result =

    20    40    60    80

您可以使用 MexHost 对象来查找由 mexhost 函数创建的进程的标识符。

mh = mexhost;
mh.ProcessIdentifier
ans = 
    "13336"

每次调用 mexhost 都会创建一个进程。

将环境变量 envName1 的值设置为 envVal1,将变量 envName2 的值设置为 envVal2

s = ["envName1","envVal1"
     "envName2","envVal2"];
mh = mexhost("EnvironmentVariables",s)
mh = 

  MexHost with properties:

             ProcessName: "MATLABMexHost"
       ProcessIdentifier: "19344"
               Functions: [0×0 string]
    EnvironmentVariables: "envName1"    "envVal1"
                          "envName2"    "envVal2"

输入参数

全部折叠

环境变量和值,指定为 n×2 字符串数组。不支持非 ASCII 字符。第一列是环境变量的名称,第二列是值。

输出参数

全部折叠

主机进程,以 matlab.mex.MexHost 对象形式返回。使用此进程可在 MATLAB 进程之外运行 C++ MEX 函数。

详细信息

全部折叠

进程生命周期

mexhost 返回的对象被销毁时,MATLAB 终止该进程。MATLAB 在出现以下任一情况时销毁该对象。

  • mexhost 返回的 MEX 主机变量超出作用域,导致 MATLAB 销毁对象。

  • 对 MEX 主机变量显式调用 delete 方法。

  • 对 MEX 主机变量调用 clear 函数,且没有对该对象的其他引用。

  • 使用以下任一选项调用 clear 函数:clear javaclear classesclear all

卸载 C++ MEX 函数

要将所有 C++ MEX 函数从其主机进程中卸载,请调用 clear mexclear functions。要卸载所有主机进程都运行的某特定 C++ MEX 函数,请对函数名称调用 clear。有关详细信息,请参阅 clear 函数和 Out-of-Process Execution of C++ MEX Functions

版本历史记录

在 R2019a 中推出