C++ コンパイル済みライブラリの関数の呼び出し
C++ ライブラリに対する MATLAB® インターフェイスのパブリッシャーから、インターフェイス ファイルと必要な場合は依存ライブラリ ファイルをインストールするように指示されます。パブリッシャーから依存ライブラリ ファイルが提供されるか、外部ソースからライブラリをインストールするように指示されるか、すべての関連ファイルへのリンクが提供されます。パブリッシャーが MATLAB アドオン を使用してツールボックスを作成した場合、この情報は、[アドオン マネージャー] のツールボックスの [オプション] メニューから表示できる入門ガイドで参照できます。詳細な情報が必要な場合や、入門ガイドが見つからない場合は、パブリッシャーにお問い合わせください。アドオンの詳細については、アドオンの管理を参照してください。
ライブラリ libname
のインターフェイス ファイルの名前は libnameInterface.
です。ext
ext
はプラットフォーム固有であり、Windows® では .dll
、Linux® では .so
、macOS では .dylib
です。
ランタイム パスの設定
MATLAB で検索されるのは、インターフェイス ファイルについては MATLAB パス、依存ライブラリ ファイルについてはシステム パスまたはランタイム検索パス (rpath) です。パブリッシャーから依存ライブラリ ファイルが提供された場合は、それらをインターフェイス ファイルと同じフォルダーに配置できます。あるいは、それらをシステム パスに追加するには、C++ インターフェイス用のランタイム ライブラリ パスの設定を参照してください。依存ライブラリの配置の詳細については、Missing or Incorrectly Installed Run-Time Librariesを参照してください。
MATLAB パスの設定
インターフェイス ファイルを含むフォルダーで addpath
を呼び出します。
ヘルプの表示
MATLAB の関数 help
と関数 doc
は、ライブラリのメンバーについてのヘルプを提供します。たとえば、ライブラリ libname
内の関数 funcname
のヘルプを表示するには、次のように入力します。
help clib.libname.funcname
関数の呼び出し
入力引数 arg1,arg2,...
と出力引数 retVal
を使用して C++ ライブラリ libname
の関数 funcname
を呼び出すには、MATLAB clib
名前空間を使用します。以下を入力すると、MATLAB は自動的にライブラリを読み込みます。
retVal = clib.libname.funcname(arg1,arg2,...)
MATLAB がライブラリを読み込んだ後、タブ補完を使用して clib
名前空間のメンバーを表示できます。
MATLAB 型の C++ 型へのマッピング
MATLAB データを引数として C++ のメソッドまたは関数に渡すと、MATLAB はそのデータを C++ 言語に対してデータを最も適切に表す型に変換します。
下表の各行は MATLAB の型の後に、一致する可能性のある C++ 引数を、一致度の高い順に左から右に示します。MATLAB の型 (cell 配列を除く) はスカラー (1 行 1 列) 配列または行列です。C++ の型は、スカラー値または配列です。"cpparray" というフレーズは、次の C++ 配列型を指します。
ボックス配列 (
[]
)配列バッファー (
*
)std::vector
MATLAB 引数 (スカラーまたは配列) | C++ のパラメーターの型 (スカラーまたは配列) 最も一致度の高い型 <———————————————————————> 最も一致度の低い型 | ||||||
---|---|---|---|---|---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
|
|
|
|
|
| ||
|
|
|
|
| |||
複素数の |
|
|
|
|
|
| |
複素数の |
|
| |||||
複素数の |
|
|
|
|
|
| |
複素数の |
|
|
|
|
| ||
複素数の |
|
|
|
| |||
複素数の |
|
| |||||
|
|
| |||||
| enum | ||||||
|
|
| |||||
C++ の |
| ||||||
MATLAB クラスの MATLAB オブジェクト | 対応なし |
既定の引数を使用した関数の呼び出し
C++ 関数が既定の引数で定義されている場合は、1 つ以上の後続の引数を指定することなく関数を呼び出すことができます。関数のヘルプで既定値が示されます。たとえば、arg
の型が double
で、その既定値が 100
の場合は、ヘルプでは以下のように表示されます。
clib.libname.funcname(arg) Input Arguments arg double = 100
以下のステートメントでは、同じ結果が生成されます。
clib.libname.funcname clib.libname.funcname(100)
以下のステートメントも正しいですが、結果が異なる場合があります。
clib.libname.funcname(99)
MATLAB では、スカラー整数型および浮動小数点型で既定の引数がサポートされます。
enum 引数を使用した関数の呼び出し
C++ ライブラリ libname
内の clib.
を入力引数として受け入れる C++ の関数やメソッドに string を渡すことができます。libname
.enum
たとえば、clib.libname.Days
を入力として受け取る関数 getValue
を含む C++ ライブラリ libname
の MATLAB インターフェイスがあるとします。
help clib.libname.getValue
getValue - clib.libname.getValue Representation of C++ function getValue. RetVal = clib.libname.getValue(D) Input Arguments D clib.libname.Days Output Arguments RetVal int32
clib.libname.Days
の値を表示するには、以下を入力します。
doc clib.libname.Days
Enumeration Summary Fri Mon Sat Sun Thu Tue Wed
clib.libname.Days.Sun
または string "Sun"
のいずれかを指定して getValue
を呼び出すことができます。
clib.libname.getValue(clib.libname.Days.Sun)
clib.libname.getValue("Sun")
ans = 106
アクセス違反エラー
ライブラリを呼び出すときは、ライブラリがデバッグ モードではなくリリース モードでコンパイルされていることを確認してください。その他の一般的な問題に関するヘルプについては、Troubleshooting MATLAB Interface to C++ Library Issuesを参照してください。