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

ホスト プロセスを作成します。関数 mexhostmatlab.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 列の string 配列として指定します。非 ASCII 文字はサポートされません。1 列目は環境変数の名前、2 列目はその値です。

出力引数

すべて折りたたむ

ホスト プロセス。matlab.mex.MexHost オブジェクトとして返されます。このプロセスを使用して MATLAB プロセス以外で C++ MEX 関数を実行します。

詳細

すべて折りたたむ

プロセスのライフ サイクル

MATLAB は mexhost で返されたオブジェクトが破棄されると、プロセスを終了します。MATLAB は以下のいずれかが発生した場合にオブジェクトを破棄します。

  • mexhost で返された MEX ホスト変数がスコープ外になり、MATLAB がオブジェクトを破棄する。

  • delete メソッドが MEX ホスト変数に明示的に呼び出される。

  • 関数 clear が MEX ホスト変数に呼び出され、オブジェクトへの参照が他にない。

  • 関数 clearclear javaclear classesclear all のいずれかのオプションで呼び出される。

C++ MEX 関数のアンロード

すべての C++ MEX 関数をそれぞれのホスト プロセスからアンロードするには、clear mex または clear functions を呼び出します。すべてのホスト プロセスで実行している特定の C++ MEX 関数をアンロードするには、関数名で clear を呼び出します。詳細については、関数 clear およびC++ MEX 関数のアウトプロセスでの実行を参照してください。

バージョン履歴

R2019a で導入