インプロセスまたはアウトプロセスでの C++ ライブラリの読み込み
インプロセスの C++ ライブラリの読み込み
MATLAB® では、インターフェイスを C++ ライブラリにインプロセスまたはアウトプロセスで読み込むことができます。既定では、clib 名前空間でコマンドを呼び出すと、MATLAB はライブラリをインプロセスで読み込みます。つまり、MATLAB は MATLAB と同じプロセスでライブラリを読み込みます。このモードはパフォーマンスが重要なユース ケースで使用します。
アウトプロセスの C++ ライブラリの読み込み
MATLAB は、アウトプロセス実行モードを使用して C++ 関数を別のプロセスで実行できます。個別のプロセスで実行すると、以下が可能になります。
MATLAB と競合するサードパーティ ライブラリを使用する。たとえば、MATLAB にも付属しているサードパーティ ライブラリが C++ ライブラリに必要だが、この C++ ライブラリに必要なのはそのサードパーティ ライブラリの別バージョンであるという場合があります。
テスト中に MATLAB を再起動する必要がなくなるため、インターフェイスの開発を効率的に反復できる。
C++ ライブラリ コードでのクラッシュから MATLAB プロセスを分離する。
Ctrl+C を押して C++ ライブラリ インターフェイスの実行を中断する。 (R2025a 以降)
アウトプロセスで実行するには、clibPublishInterfaceWorkflow 関数で作成されたワークフロー スクリプトで、ワークフロー スクリプトでのパブリッシュで説明した [Enable out-of-process execution mode] セクションを実行します。
あるいは、コマンド ラインから、名前と値の引数 ExecutionMode を "outofprocess" に設定して clibConfiguration 関数を呼び出します。
libraryconfig = clibConfiguration("mylib",ExecutionMode="outofprocess")
libraryconfig =
CLibraryConfiguration for mylib with properties:
InterfaceLibraryPath: "C:\work"
Libraries: ""
Loaded: 0
ExecutionMode: outofprocess
OutOfProcessEnvironmentVariables: dictionary (string-->string) with no entriesライブラリ インターフェイスがアウトプロセスで実行されるように構成された後、ライブラリ名前空間で clib コマンドを呼び出すと、MATLAB はライブラリをアウトプロセスで読み込みます。
アウトプロセスの C++ ライブラリのアンロード
関数 clibPublishInterfaceWorkflow で作成されたワークフロー スクリプトで [Enable out-of-process execution mode] セクションを実行した場合、[Unload out-of-process library] セクションを実行して C++ ライブラリをアンロードできます。
あるいは、MATLAB インターフェイスで unload を呼び出します。たとえば、school C++ ライブラリへのインターフェイス schoolInterface.dll をビルドし、そのインターフェイスを読み込んでアウトプロセス実行に設定したものとします。ライブラリ インターフェイスの構成を表示します。
libraryconfig = clibConfiguration("school")libraryconfig =
CLibraryConfiguration for school with properties:
InterfaceLibraryPath: "C:\work"
Libraries: ""
Loaded: 1
ExecutionMode: outofprocess
ProcessID: 12345
OutOfProcessEnvironmentVariables: dictionary (string ⟼ string) with no entries次に、ライブラリをアンロードします。
libraryconfig.unload
ホスト プロセスに関する情報の取得
関数 clibConfiguration を呼び出して作成した CLibraryConfiguration オブジェクトを使用して、ホスト プロセスに関する情報を取得します。次のオブジェクト プロパティは、C++ ライブラリへの MATLAB インターフェイスの設定とステータスに関する情報を提供します。
InterfaceLibraryPathには、インターフェイス ライブラリへのパスが含まれます。Librariesには、インターフェイスのビルドに使用されたライブラリの名前が含まれます。Loadedには、プロセスのステータスが含まれます。ライブラリが読み込まれている場合は1、ライブラリが読み込まれていない場合は0が示されます。ExecutionModeは、MATLAB と同じプロセスで C++ ライブラリ インターフェイスを読み込むかどうかを示します。inprocessまたはoutofprocessとして指定します。ProcessNameには、ホスト プロセスの名前が含まれています。アウトプロセス ホストの既定の名前はMATLABCLibHostです。ProcessIDには、プロセス識別子が含まれています。OutOfProcessEnvironmentVariablesには、C++ ライブラリへのインターフェイスで使用されるシステム環境変数の名前と値が 1 つ以上含まれています。環境変数は、アウトプロセス モードでのみ表示できます。