このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。
clibgen.generateLibraryDefinition
構文
説明
関数 clibgen.generateLibraryDefinition
は、C++ ライブラリへの MATLAB® インターフェイスの生成に使用する MATLAB ライブ コード "定義ファイル" を作成します。この関数を使用して以下を行います。
インターフェイスを定義する C/C++ ファイルを選択する。使用する構文の説明については、ヒントの「ライブラリ内のファイル」を参照してください。
生成ステップで使用する構成を選択する。
引数を定義するために使用する構成を指定する (オプション)。
コンパイラ ビルド構成引数を指定する (オプション)。
定義ファイルを作成した後に、必要に応じてコンテンツを変更し、関数では自動的に定義できない機能を含めることができます。ライブラリ定義ファイルの使用については、C++ ライブラリに対する MATLAB インターフェイスの定義を参照してください。
MATLAB でサポートされる C++ コンパイラが必要です。C++ ライブラリのビルドに使用したものと同じコンパイラを使って、インターフェイス ライブラリをビルドしなければなりません。ライブラリがソース ファイルで完全に定義される場合 (コンパイル済みライブラリ ファイルを使用しない場合)、サポートされている任意の C++ コンパイラを選択してインターフェイス ライブラリをビルドできます。C++ コンパイラの詳細については、以下を入力してください。
mex -setup cpp
定義ファイルで関数 build
を呼び出して MATLAB インターフェイス ファイルを作成します。
clibgen.generateLibraryDefinition(
は、InterfaceGenerationFiles
,Libraries
=LibraryFiles)InterfaceGenerationFiles
および LibraryFiles
で定義される定義ファイルを作成します。
定義ファイルの名前は define
です。既定の設定では、libName
.mlibName
は InterfaceGenerationFiles
で指定した最初のファイルの名前です。たとえば、mylibrary.hpp
という名前のヘッダー ファイルを指定すると、この関数によって definemylibrary.m
という名前の定義ファイルが作成されます。インターフェイス生成ファイルを複数指定する場合は、名前と値の引数 PackageName
を使用して libName
を指定する必要があります。
clibgen.generateLibraryDefinition(
は、複数のヘッダー ファイル、ソース ファイル、および必要な場合は、コンパイル済みライブラリ ファイルにより定義されたライブラリ用です。InterfaceGenerationFiles
,SupportingSourceFiles
=SourceFiles)
clibgen.generateLibraryDefinition(
は、InterfaceGenerationFiles
)InterfaceGenerationFiles
で完全に定義されるライブラリ用です。ライブラリにコンパイル済みライブラリ ファイルが含まれている場合、引数 Libraries
を指定しなければなりません。
clibgen.generateLibraryDefinition(___,
は、1 つ以上の名前と値のペアの引数を使用してファイルを作成します。このオプションは、前述の構文のすべての入力引数の組み合わせで使用できます。Name=Value
)
構成オプションを使用して、定義ファイルの出力フォルダーまたはインターフェイス パッケージ名を指定します。
C++ ライブラリ設定を使用して、コンパイラ ビルドおよびリンクのオプションを指定します。
定義の構成を使用して、ライブラリ内のすべての特定の引数タイプを定義します。
例
入力引数
制限
LibraryDefinition
オブジェクトdefinelibName
を MAT ファイルに保存することはサポートされていません。一部のロケール設定では非 ASCII 文字がサポートされていないため、フォルダー名とファイル名にはこれらの文字を使用しないでください。ロケールの詳細については、国際化に向けたロケール設定の概念を参照してください。
ヒント
ライブラリ定義ファイルを作成し直すには、名前と値の引数
OverwriteExistingDefinitionFiles
をtrue
に設定してclibgen.generateLibraryDefinition
を呼び出します。このオプションを使用すると、関数により、それらのファイルに対して行った編集も含めてファイルが削除されます。トラブルシューティングの詳細については、Troubleshooting C++ Library Definition Issuesを参照してください。
ライブラリに C/C++ ヘッダー ファイル、ソース ファイル、およびコンパイル済みライブラリ ファイルの組み合わせが含まれる場合があります。次の表に、ライブラリを定義するファイルの種類に応じた
clibgen.generateLibraryDefinition
の引数の設定方法を示します。ライブラリ内のファイル
InterfaceGenerationFiles
引数名前と値の引数 Windows の単一の CPP ヘッダー ファイルとインポート ライブラリ ファイル。
A.hpp
フォルダー
C:\Documents\MATLAB\
にあるA.lib
インポート ライブラリ ファイル
"A.hpp"
Libraries="C:\Documents\MATLAB\A.lib"
Linux の CPP ヘッダー ファイルとコンパイル済みオブジェクト ファイル。
A.hpp
フォルダー
~/MATLAB/
にあるA.so
"A.hpp"
Libraries="~/MATLAB/A.so"
macOS の CPP ヘッダー ファイルとダイナミック コンパイル済みライブラリ ファイル。
A.hpp
フォルダー
$home/Documents/MATLAB
にあるA.dylib
"A.hpp"
Libraries="$home/Documents/MATLAB/A.dylib"
CPP ヘッダー ファイルと CPP ソース ファイルで完全に定義。ライブラリ ファイルなし。
ヘッダー ファイル
A.hpp
ソース ファイル
A.cpp
"A.hpp"
SupportingSourceFiles="A.cpp"
複数の CPP ヘッダー ファイルとソース ファイルおよびコンパイル済みライブラリ ファイル。
A
という名前のインターフェイスを作成。ヘッダー ファイル
A.hpp
およびB.hpp
ソース ファイル
A.cpp
C:\Documents\MATLAB\
にあるコンパイル済みライブラリ ファイルB.lib
["A.hpp","B.hpp"]
PackageName="A"
a
Libraries="C:\Documents\MATLAB\B.lib"
SupportingSourceFiles="A.cpp"
CPP ヘッダーのみのライブラリ。ライブラリがヘッダー ファイルで完全に定義され、コンパイル済みライブラリ ファイルがない。
A.hpp
"A.hpp"
該当なし
CPP ソース ファイルで完全に定義され、コンパイル済みライブラリ ファイルがない。
A.cpp
"A.cpp"
該当なし
C ヘッダー ファイルとソース ファイルで完全に定義。ライブラリ ファイルなし。
A.h
A.c
"A.h"
SupportingSourceFiles="A.c"
CLinkage=true
Windows の単一の C ヘッダー ファイルとインポート ライブラリ ファイル。
A.h
C:\Documents\MATLAB\
内のA.lib
"A.h"
Libraries="C:\Documents\MATLAB\A.lib"
CLinkage=true
CPP ソース ファイルが C ヘッダー ファイルおよびソース ファイルに依存。
ソース ファイル
myCPP.cpp
C:\Documents\MATLAB\
内のヘッダー ファイルおよびソース ファイルA.h
およびA.c
"myCPP.cpp"
SupportingSourceFiles="C:\Documents\MATLAB\A.c"
C ライブラリが CPP ソース ファイルに依存。
C:\Documents\MATLAB\
内のヘッダー ファイルおよびソース ファイルA.h
およびA.c
ソース ファイル
myCPP.cpp
["C:\Documents\MATLAB\A.h", "myCPP.cpp"]
PackageName="myCPP"
SupportingSourceFiles="C:\Documents\MATLAB\A.c"
CLinkage=true
CPP および C ヘッダー ファイルで定義されているライブラリと、
C:\Documents\MATLAB\
内の対応するライブラリ ファイル。myCPP.hpp
myCPP.lib
myC.h
myC.lib
["myCPP.hpp","myC.h"]
PackageName="myCPP"
Libraries=["C:\Documents\MATLAB\myCPP.lib","C:\Documents\MATLAB\myC.lib"]
CLinkage=true
C ヘッダー ファイルが CPP ヘッダー ファイルに依存。
A.h
C:\Documents\MATLAB\
内のB.hpp
"A.h"
IncludePath="C:\Documents\MATLAB\"
a Because you have multiple header files, you must set the
PackageName
name-value argument. For example, if you setPackageName
to"A"
, then when you call library functionfunctionname
from MATLAB, the syntax isclib.A.functionname
.
代替機能
ライブ タスク
関数 clibPublishInterfaceWorkflow
を呼び出して、[C++ インターフェイスの生成] ライブ タスクを使用します。