Main Content

clibgen.generateLibraryDefinition

C++ ライブラリの定義ファイルを作成

説明

関数 clibgen.generateLibraryDefinition は、C++ ライブラリへの MATLAB® インターフェイスの生成に使用する、ファイル拡張子が .m である "定義ファイル" を作成します。この関数を使用して以下を行います。

  • インターフェイスを定義する C/C++ ファイルを選択する。使用する構文の説明については、ヒントの「ライブラリ内のファイル」を参照してください。

  • 生成ステップで使用する構成を選択する。

  • 引数を定義するために使用する構成を指定する (オプション)。

  • コンパイラ ビルド構成引数を指定する (オプション)。

定義ファイルを作成した後に、必要に応じてコンテンツを変更し、関数では自動的に定義できない機能を含めることができます。ライブラリ定義ファイルの使用については、C++ ライブラリに対する MATLAB インターフェイスの定義を参照してください。

MATLAB でサポートされる C++ コンパイラが必要です。C++ ライブラリのビルドに使用したものと同じコンパイラを使って、インターフェイス ライブラリをビルドしなければなりません。ライブラリがソース ファイルで完全に定義される場合 (コンパイル済みライブラリ ファイルを使用しない場合)、サポートされている任意の C++ コンパイラを選択してインターフェイス ライブラリをビルドできます。C++ コンパイラの詳細については、以下を入力してください。

mex -setup cpp

定義ファイルで関数 build を呼び出して MATLAB インターフェイス ファイルを作成します。

clibgen.generateLibraryDefinition(InterfaceGenerationFiles,Libraries=LibraryFiles) は、InterfaceGenerationFiles および LibraryFiles で定義される定義ファイルを作成します。

定義ファイルの名前は definelibName.m です (R2022b 以降)。既定の設定では、libNameInterfaceGenerationFiles で指定した最初のファイルの名前です。たとえば、mylibrary.hpp という名前のヘッダー ファイルを指定すると、この関数によって definemylibrary.m という名前の定義ファイルが作成されます。インターフェイス生成ファイルを複数指定する場合は、名前と値の引数 InterfaceName を使用して libName を指定する必要があります。

clibgen.generateLibraryDefinition(InterfaceGenerationFiles,SupportingSourceFiles=SourceFiles) は、複数のヘッダー ファイル、ソース ファイル、および必要な場合は、コンパイル済みライブラリ ファイルにより定義されたライブラリ用です。

clibgen.generateLibraryDefinition(InterfaceGenerationFiles) は、InterfaceGenerationFiles で完全に定義されるライブラリ用です。ライブラリにコンパイル済みライブラリ ファイルが含まれている場合、引数 Libraries を指定しなければなりません。

clibgen.generateLibraryDefinition(___,Name=Value) は、1 つ以上の名前と値の引数を使用してファイルを作成します。このオプションは、前述の構文のすべての入力引数の組み合わせで使用できます。

  • 構成オプションを使用して、定義ファイルの出力フォルダーまたはインターフェイス名前空間を指定します。

  • C++ ライブラリ設定を使用して、コンパイラ ビルドおよびリンクのオプションを指定します。

  • 定義の構成を使用して、ライブラリ内のすべての特定の引数タイプを定義します。

すべて折りたたむ

この例のファイルは、MATLAB サンプル フォルダーに格納されています。Windows®matrixOperations.hpp ヘッダー ファイルからライブラリ定義ファイル definematrixOperations.m を生成します。Linux® の例については、Linux でのヘッダー ファイルおよび C++ コンパイル済みライブラリ ファイルを参照してください。

ヘッダー ファイルの絶対パスを指定して InterfaceGenerationFiles 引数 hFile を作成します。

hFile = fullfile(matlabroot,"extern","examples","cpp_interface","matrixOperations.hpp");

このヘッダー ファイルには別のヘッダー ファイルが含まれています。含まれているヘッダー ファイルが格納されているフォルダーの絶対パスを指定して IncludePath 引数 iPath を作成します。

iPath = fullfile(matlabroot,"extern","examples","cpp_interface");

コンパイル済みライブラリ ファイルの絶対パスを指定して Libraries 引数 libFile を作成します。

libFile = fullfile(matlabroot,"extern","examples","cpp_interface", ...
    "win64","mingw64","matrixOperations.lib");

definematrixOperations.m ライブラリ定義ファイルを作成します。

clibgen.generateLibraryDefinition(hFile,IncludePath=iPath,Libraries=libFile)
C++ compiler set to 'MinGW64 Compiler (C++)'.
Definition file definematrixOperations.m contains definitions for 10 constructs supported by MATLAB.
- 5 constructs are fully defined.
- 5 constructs partially defined and commented out. 

To include the 5 undefined constructs in the interface, 
uncomment and complete the definitions in definematrixOperations.m.
To build the interface, call build(definematrixOperations).

この例のファイルは、MATLAB サンプル フォルダーに格納されています。matrixOperations.hpp ファイルと matrixOperations.cpp ファイルから definematrixOps.m という名前のライブラリ定義ファイルを生成します。

ヘッダー ファイル matrixOperations.hpp の絶対パスを指定して InterfaceGenerationFiles 引数 hFile を作成します。

hFile = fullfile(matlabroot,"extern","examples","cpp_interface","matrixOperations.hpp");

このヘッダー ファイルには別のヘッダー ファイルが含まれています。含まれているヘッダー ファイルが格納されているフォルダーの絶対パスを指定して IncludePath 引数 iPath を作成します。

iPath = fullfile(matlabroot,"extern","examples","cpp_interface");

C++ ソース ファイル matrixOperations.cpp の絶対パスを指定して SupportingSourceFiles 引数 cFile を作成します。

cFile = fullfile(matlabroot,"extern","examples","cpp_interface","matrixOperations.cpp");

引数 InterfaceName"matrixOps" に設定して、ライブラリ定義ファイル definematrixOps.m を作成します。

clibgen.generateLibraryDefinition(hFile, ...
    SupportingSourceFiles=cFile, ...
    IncludePath=iPath, ...
    InterfaceName="matrixOps")
C++ compiler set to 'MinGW64 Compiler (C++)'.
Definition file definematrixOps.m contains definitions for 10 constructs supported by MATLAB.
- 5 constructs are fully defined.
- 5 constructs partially defined and commented out. 

To include the 5 undefined constructs in the interface, 
uncomment and complete the definitions in definematrixOps.m.
To build the interface, call build(definematrixOps).

school.hpp ヘッダー ファイルからライブラリ定義ファイル defineschool.m を生成します。

clibgen.generateLibraryDefinition(fullfile(matlabroot,"extern","examples", ...
    "cpp_interface","school.hpp"))
C++ compiler set to 'MinGW64 Compiler (C++)'.
Definition file defineschool.m contains definitions for 21 constructs supported by MATLAB.
- 20 constructs are fully defined.
- 1 construct partially defined and commented out.

To include the 1 undefined construct in the interface, 
uncomment and complete the definitions in defineschool.m.
To build the interface, call build(defineschool).

入力引数

すべて折りたたむ

インターフェイスを生成するためのファイル。string 配列、文字ベクトル、または文字ベクトルの cell 配列として指定します。現在のフォルダーまたは MATLAB のパスにない場合、引数にはファイルの絶対パスまたは相対パスが含まれます。詳細については、ヒントの「ライブラリ内のファイル」を参照してください。

引数 InterfaceGenerationFiles および SupportingSourceFiles を指定するファイルは次のとおりです。

  • ヘッダー ファイル。ファイル拡張子は .h.hpp、または .hxx です。拡張子のないヘッダー ファイルもサポートされます。CLinkage 引数を true に設定した場合、.h ヘッダー ファイルのコードは C++ と互換性のある C コードでなければなりません。

    インターフェイス生成ファイルを複数指定する場合は、InterfaceName 引数を使用する必要があります。

  • ソース コード ファイル。ファイル拡張子は .c.cpp、または .cxx です。C ソース ファイルの使用については、CLinkage を参照してください。

これらのファイルには、ライブラリによってエクスポートされたすべての関数の宣言を含めなければなりません。これらを C++ 開発環境でコンパイルし、その機能を C++ アプリケーションで使用できなければなりません。ライブラリがヘッダー ファイル (ヘッダーのみのライブラリ) で完全に定義される場合、引数 Libraries を指定する必要ありません。

さまざまなフォルダー内のヘッダー ファイルの #include ステートメントがメイン ヘッダー ファイルに含まれている場合は、IncludePath 引数を使用してこれらのパスを指定します。

1 つのヘッダー ファイル名を指定した場合、関数は、そのヘッダー ファイルと同じフォルダーで同じ名前のライブラリを探します。ライブラリにはプラットフォーム固有のファイル名の拡張子がなければなりません。ライブラリに異なる名前がある場合、またはライブラリが同じフォルダーにない場合、Libraries 引数を使用します。

関数は、インターフェイス ファイルを現在のフォルダーのサブフォルダーに書き込みます。ただし、OutputFolder 引数を指定する場合を除きます。このサブフォルダーの名前は、最初のヘッダー ファイルの名前からファイル拡張子を除いたものです。たとえば、このステートメントは現在のフォルダーのサブフォルダー myHeader でインターフェイス ライブラリ ファイルを作成します。

clibgen.generateLibraryDefinition("myHeader.hpp")

例: "sample.hpp"

データ型: char | string | cell

名前と値の引数

引数のオプションのペアを Name1=Value1,...,NameN=ValueN として指定します。ここで Name は引数名で、Value は対応する値です。名前と値の引数は他の引数の後になければなりませんが、ペアの順序は重要ではありません。

R2021a より前では、コンマを使用してそれぞれの名前と値を区切り、Name を引用符で囲みます。

例: clibgen.generateLibraryDefinition( ...
["hfile1.hpp","hfile2.hpp"], ...
Libraries="hfile1.lib", ...
IncludePath="C:\mylib\include", ...
InterfaceName="mylib", ...
OutputFolder="C:\work", ...
DefinedMacros=["mymacro1","mymacro2=0"], ...
UndefinedMacros="mymacro3", ...
OverwriteExistingDefinitionFiles=true);

ファイルの選択

すべて折りたたむ

コンパイル済みライブラリ ファイル名。string 配列、文字ベクトルまたは文字ベクトルの cell 配列として指定します。InterfaceGenerationFiles 引数および名前と値の引数 SupportingSourceFiles で指定されたファイルでライブラリが完全に定義される場合を除き、この値は必須です。

ライブラリは次のいずれかです。

  • Windows プラットフォームの場合:

    • コンパイル済みライブラリの場合は .lib インポート ライブラリ ファイルを指定します。

      .lib ファイルを使用できない場合、サポートされている Microsoft® Visual Studio® コンパイラでライブラリがコンパイルされていれば、.dll ダイナミックリンク ライブラリ ファイルを指定できます (R2021a 以降)。以下に例を示します。

      clibgen.generateLibraryDefinition("A.hpp",Libraries="A.dll")
    • スタティック ライブラリの場合は .lib ファイルを指定します。以下に例を示します。

      clibgen.generateLibraryDefinition("A.hpp",Libraries="A.lib")

      サポートされている MinGW-w64 コンパイラでライブラリがコンパイルされていれば、.a スタティック ライブラリ ファイルを指定できます (R2022a 以降)。以下に例を示します。

      clibgen.generateLibraryDefinition("A.hpp",Libraries="A.a")
  • Linux プラットフォームの場合、.so 共有オブジェクト ファイルまたは .a スタティック ライブラリ ファイルを指定します。

  • macOS プラットフォームの場合、.dylib ダイナミック共有ライブラリ ファイルまたは .a スタティック ライブラリ ファイルを指定します。

たとえば、このステートメントは、現在のフォルダー内の sample.hpp および C:\myLib フォルダー内の myLib.lib を使用して definesample.m を作成し、その定義ファイルを現在のフォルダーに書き込みます。

clibgen.generateLibraryDefinition("sample.hpp",Libraries="C:\myLib\myLib.lib")

データ型: char | string | cell

R2020b 以降

C/C++ ソース ファイル。string 配列、文字ベクトル、または文字ベクトルの cell 配列として指定します。名前と値の引数 SupportingSourceFiles と共に使用します。サポートされているファイル拡張子は .c.cpp.cxx です。現在のフォルダーまたは MATLAB のパスにない場合、引数にはファイルの絶対パスまたは相対パスが含まれます。サポート ソース ファイルには C/C++ コードが含まれていなければなりません。

詳細については、ヒントの「ライブラリ内のファイル」を参照してください。

C ソース ファイルのビルドについては、CLinkage を参照してください。

ライブラリがヘッダー ファイルおよび C++ ソース ファイルにより完全に定義されている場合、コンパイル済みライブラリ ファイルは必要ありません。

例: "sample.cpp"

データ型: char | string | cell

含まれるヘッダー ファイルのフォルダー。string 配列、文字ベクトル、または文字ベクトルの cell 配列として指定します。IncludePath の各値は、ヘッダー ファイルのコンパイル中に含めるフォルダーへの絶対パス名でなければなりません。

さまざまなフォルダー内のヘッダー ファイルの #include ステートメントがメイン ヘッダー ファイルに含まれている場合は、IncludePath 引数を使用してこれらのパスを指定します。

データ型: char | string | cell

R2024a 以降

ライブラリ定義ファイルを共有するパブリッシャーの開始パス名。key がパブリッシャーによって選択された変数名であり、value が相対パス名である、スカラーのディクショナリとして指定します。ディクショナリ エントリは、string スカラーまたは文字ベクトルとして指定します。たとえば、コンピューター上のライブラリ ファイルへの開始パス名が c:\user1\libname であるとします。別のパブリッシャーは、フォルダー c:\user2\libname に配置された同じバージョンのライブラリをもっています。キー変数名を選択し、その名前を別のパブリッシャーに渡すと、そのパブリッシャーは、関数 clibgen.generateLibraryDefinition でその名前を使用して自身のローカル フォルダーを特定します。

次の引数で指定したファイルへのローカル パスを特定し、そのパスを RootPaths ディクショナリ引数に含めます。

次に、< タグと > タグを使用して、これらの引数名に含まれるローカル パスを RootPaths のキーに置き換えます。これにより、別のパブリッシャーは、MATLAB でこれらの引数内のパスを特定するために使用するキーと値の引数 RootPaths で独自のローカル パスを指定できます。たとえば、次のステートメントは、definemyLib.m という名前のライブラリ定義ファイルを作成します。ディクショナリのキーは rootpath で、ライブラリ ファイルはコンピューター上の C:\user1\libname にあります。

startpaths = dictionary;
startpaths("rootpath") = "C:\user1\libname\";
clibgen.generateLibraryDefinition( ...
    ["<rootpath>\src\header1.hpp" "<rootpath>\include\header2.hpp"], ...
    IncludePath="<rootpath>\include", ...
    Libraries="<rootpath>\lib\libname.lib", ...
    OutputFolder="<rootpath>\MATLAB", ...
    RootPaths=startpaths, ...
    InterfaceName="myLib");

別のパブリッシャーが同じファイル構造で同じバージョンのライブラリをもっており、それが C:\user2\libname という名前のルート フォルダーにある場合は、そのパブリッシャーに、次のインターフェイスのビルド手順を添えて definemyLib.m ファイルと myLibData.xml ファイルを渡すことができます。

libdef = definemyLib;
%myPath = location of files that define library in local folder
libdef.RootPaths("rootpath") = myPath;
libdef.build
構成

すべて折りたたむ

R2024a 以降

生成されたインターフェイス名前空間。string スカラーまたは文字ベクトルとして指定します。1 つのヘッダー ファイルから作成されたインターフェイスの場合、既定値はヘッダー名です。複数のヘッダー ファイルの場合、InterfaceName は有効な MATLAB 名でなければなりません。

たとえば、次のステートメントは現在のフォルダーに definemylib.m を作成します。

clibgen.generateLibraryDefinition(["h1.hpp","h2.hpp"],InterfaceName="mylib")

InterfaceName を使用して、MATLAB のライブラリを呼び出します。たとえば、ライブラリ インターフェイス libname の関数 myfunc を呼び出すには、以下のように入力します。

clib.libname.myfunc

詳細については、C++ コンパイル済みライブラリの関数の呼び出しを参照してください。

データ型: char | string | cell

生成される定義ファイルのフォルダー名。string スカラーまたは文字ベクトルとして指定します。関数 build を呼び出す前に、フォルダーが MATLAB パス上にあることを確認します。次のステートメントは definemyHeader.mC:\work に作成します。

clibgen.generateLibraryDefinition("myHeader.hpp",OutputFolder="C:\work")

データ型: char | string | cell

R2021b 以降

ライブラリ定義ファイルを上書きするためのオプション。数値または logical 1 (true) または 0 (false) として指定します。定義ファイルの形式は definelibName.m または definelibname.m です。既存のファイルを上書きする場合は、OverwriteExistingDefinitionFilestrue に設定します。このオプションを使用して定義ファイルを生成します。

注意

このオプションを使用すると、関数により、それらのファイルに対して行った編集も含めてファイルが削除されます。

データ型: logical

生成メッセージの表示オプション。数値または logical 1 (true) または 0 (false) として指定します。Verbosetrue の場合、関数は定義ファイルの作成中および build コマンドで、生成メッセージをコマンド ウィンドウに表示します。このステートメントは defineh1.m を作成し、メッセージをコマンド ウィンドウに表示します。

clibgen.generateLibraryDefinition("h1.hpp",Verbose=true)

詳細については、サポートされていない型についてのメッセージを参照してください。

データ型: logical

C++ ライブラリ設定

すべて折りたたむ

R2022a 以降

.h ヘッダー ファイルを解析およびビルドする方法を指定するオプション。数値または logical 1 (true) または 0 (false) として指定します。

CLinkagetrue の場合、関数は InterfaceGenerationFiles 引数内の .h ヘッダー ファイルを C ヘッダー ファイルとして扱います。C ヘッダー ファイルは、生成されたインターフェイス コード内の extern "C" ブロックに含められます。これにより、C ソース ファイルまたは C ライブラリに対してリンクする際に名前マングリングの問題が生じなくなります。

以下により定義されているライブラリのインターフェイスを作成する際に CLinkagetrue に設定します。

  • C ヘッダー ファイルおよびライブラリ ファイル。

  • C ヘッダー ファイルおよびソース ファイル。

CLinkagefalse の場合、関数は .h ヘッダー ファイルを C++ ファイルとして扱います。C への依存関係がある C++ ファイルからインターフェイスを作成する際には、既定 (CLinkagefalse) を使用します。この場合、C ファイルは、次の引数のいずれかで指定します。

  • C ヘッダー ファイルの場所を指す IncludePath

  • C ソース ファイルを指す SupportingSourceFiles

  • C コンパイル済みライブラリ ファイル .lib.dll.so、または .dylib を指す Libraries

clibgen.generateLibraryDefinition 引数で C ファイルを使用する方法を示した例については、ヒントの「ライブラリ内のファイル」を参照し、CLinkage を検索してください。

データ型: logical

R2019b 以降

ヘッダー ファイルを解析する際に使用するマクロ定義のリスト。空、スカラー string、またはスカラー string の行ベクトルとして指定します。マクロ名には 1 ~ 9、a ~ z、A ~ Z、および '_' の文字が含まれ、先頭を数字にすることはできません。

データ型: string

R2019b 以降

ヘッダー ファイルを解析する際に使用するマクロのキャンセルのリスト。空、スカラー string、またはスカラー string の行ベクトルとして指定します。マクロ名には 1 ~ 9、a ~ z、A ~ Z、および '_' の文字が含まれ、先頭を数字にすることはできません。

データ型: string

R2022a 以降

インターフェイスをビルドするために使用されるコンパイラ フラグに追加するコンパイラ フラグのリスト。string 配列、文字ベクトル、または文字ベクトルの cell 配列として指定します。関数は、フラグを検証することなくコンパイラに直接渡します。

詳細については、C++ ライブラリ インターフェイスのビルドと内容の確認を参照してください。

例: clibgen.generateLibraryDefinition("A.hpp","AdditionalCompilerFlags","-std=c++20")

データ型: char | string | cell

R2022a 以降

インターフェイスをビルドするために使用されるリンカー フラグに追加するリンカー フラグのリスト。string 配列、文字ベクトル、または文字ベクトルの cell 配列として指定します。関数は、フラグを検証することなくリンカーに直接渡します。

詳細については、C++ ライブラリ インターフェイスのビルドと内容の確認を参照してください。

データ型: char | string | cell

定義の構成

すべて折りたたむ

R2019b 以降

オブジェクト ポインターの形状指定子。数値または logical 1 (true) または 0 (false) として指定します。TreatObjectPointerAsScalartrue の場合、関数は SHAPE1 として指定してライブラリ内のすべてのオブジェクト ポインターをスカラーとして扱います。それ以外の場合、オブジェクト ポインターの形状は不明です。

R2019b で導入されました。

データ型: logical

R2019b 以降

const 文字ポインターの形状と MATLAB 型指定子。数値または logical 1 (true) または 0 (false) として指定します。TreatConstCharPointerAsCStringtrue の場合、関数は MLTYPEstringSHAPEnullTerminated として指定し、ライブラリ内のすべての const 文字ポインターを null で終了する C の文字列として扱います。それ以外の場合、MATLAB 型および const 文字ポインターの形状は不明です。サポートされているポインターの型は次のとおりです。

  • const char *

  • const wchar_t *

  • const char16_t *

  • const char32_t *

データ型: logical

非オブジェクト C++ 配列を返す方法を指定するオプション。数値または logical 1 (true) または 0 (false) として指定します。ReturnCArraystrue の場合、関数は C++ 配列を MATLAB clib 配列型 (clib.array.*) に変換します。false の場合、関数は C++ 配列をネイティブ MATLAB 配列に変換します。

データ型: logical

C++ ファイルからドキュメンテーションを生成するオプション。数値または logical 1 (true) または 0 (false) として指定します。GenerateDocumentationFromHeaderFilestrue の場合、関数は MATLAB doc コマンドを使用して C++ ファイルのコメントから表示用のドキュメンテーションを生成します。false の場合、関数は C++ コメントを無視し、MATLAB のドキュメンテーションおよび C++ 型のマッピングのみを生成します。

詳細については、C++ ライブラリに対する MATLAB インターフェイスのヘルプ テキストのパブリッシュを参照してください。

データ型: logical

制限

  • LibraryDefinition オブジェクト definelibName を MAT ファイルに保存することはサポートされていません。

  • 一部のロケール設定では非 ASCII 文字がサポートされていないため、フォルダー名とファイル名にはこれらの文字を使用しないでください。ロケールの詳細については、ロケールと表示言語の設定を参照してください。

ヒント

  • ライブラリ定義ファイルを作成し直すには、名前と値の引数 OverwriteExistingDefinitionFilestrue に設定して clibgen.generateLibraryDefinition を呼び出します。このオプションを使用すると、関数により、それらのファイルに対して行った編集も含めてファイルが削除されます。

  • トラブルシューティングの詳細については、Troubleshooting C++ Library Definition Issuesを参照してください。

  • ライブラリに C/C++ ヘッダー ファイル、ソース ファイル、およびコンパイル済みライブラリ ファイルの組み合わせが含まれる場合があります。次の表に、ライブラリを定義するファイルの種類に応じた clibgen.generateLibraryDefinition の引数の設定方法を示します。

    ライブラリ内のファイル

    InterfaceGenerationFiles
    引数

    名前と値の引数

    Windows の単一の CPP ヘッダー ファイルとインポート ライブラリ ファイル。

    • A.hpp

    • フォルダー C:\Documents\MATLAB\ にある A.lib インポート ライブラリ ファイル

    例: Windows でのヘッダー ファイルおよび C++ コンパイル済みライブラリ ファイル

    "A.hpp"

    Libraries="C:\Documents\MATLAB\A.lib"

    Linux の CPP ヘッダー ファイルとコンパイル済みオブジェクト ファイル。

    • A.hpp

    • フォルダー ~/MATLAB/ にある A.so

    例: Linux でのヘッダー ファイルおよび C++ コンパイル済みライブラリ ファイル

    "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

    例: ヘッダーと C++ のソース ファイル

    "A.hpp"

    SupportingSourceFiles="A.cpp"

    複数の CPP ヘッダー ファイルとソース ファイルおよびコンパイル済みライブラリ ファイル。A という名前のインターフェイスを作成。

    • ヘッダー ファイル A.hpp および B.hpp

    • ソース ファイル A.cpp

    • C:\Documents\MATLAB\ にあるコンパイル済みライブラリ ファイル B.lib

    ["A.hpp","B.hpp"]

    InterfaceName="A"a

    Libraries="C:\Documents\MATLAB\B.lib"

    SupportingSourceFiles="A.cpp"

    CPP ヘッダーのみのライブラリ。ライブラリがヘッダー ファイルで完全に定義され、コンパイル済みライブラリ ファイルがない。

    • A.hpp

    例: ヘッダー専用の 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"]

    InterfaceName="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"]

    InterfaceName="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 InterfaceName name-value argument. For example, if you set InterfaceName to "A", then when you call library function functionname from MATLAB, the syntax is clib.A.functionname.

代替機能

ライブ タスク

関数 clibPublishInterfaceWorkflow を呼び出して、[C++ インターフェイスの生成] ライブ タスクを使用します。

バージョン履歴

R2019a で導入

すべて展開する