Main Content

このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。

clibgen.buildInterface

定義ファイルなしで C++ ライブラリへのインターフェイスを作成

説明

clibgen.buildInterface(HeaderFiles,'Libraries',Libraries) は、HeaderFiles および Libraries により定義された C++ ライブラリへの MATLAB® インターフェイスを作成します。

メモ

MATLAB が自動的に定義できないライブラリ内のクラス コンストラクター、メソッド、データ メンバーおよび関数はすべて破棄されます。欠落している機能を含めるには、関数 clibgen.generateLibraryDefinition および関数 build による 2 ステップのビルド ワークフローを使用します。

インターフェイス ファイルの名前は、プラットフォーム固有のファイル拡張子をもつ libNameInterface です。既定の設定では、libNameHeaderFiles で指定したファイルの名前です。

MATLAB でサポートされる C++ コンパイラが必要です。C++ ライブラリのビルドに使用したものと同じコンパイラを使って、インターフェイスをビルドしなければなりません。

clibgen.buildInterface(HeaderFiles,'Libraries',Libraries,'SupportingSourceFiles',SupportingSourceFiles) は複数のヘッダー ファイル、ソース ファイル、および必要な場合は、共有ライブラリ ファイルにより定義されたライブラリに対するインターフェイスを作成します。

clibgen.buildInterface(HeaderFiles)HeaderFiles より完全に定義されたライブラリに対するインターフェイスを作成します。MATLAB でサポートされている任意の C++ コンパイラを選択してインターフェイスをビルドできます。

ライブラリに共有ライブラリ ファイルが含まれている場合、'Libraries' 引数を指定しなければなりません。

clibgen.buildInterface(HeaderFiles,___,Name,Value) は、1 つ以上の名前と値のペアの引数を使用して、インターフェイスを生成します。このオプションは、前述の構文のすべての入力引数の組み合わせで使用できます。

すべて折りたたむ

school.hpp ヘッダー ファイルを、書き込み可能なフォルダー H:\Documents\MATLAB\publisher にコピーします。

copyfile(fullfile(matlabroot,'extern','examples','cpp_interface','school.hpp'),'.','f')

インターフェイス schoolInterface.dll をビルドします。

clibgen.buildInterface("school.hpp")
Building interface file 'schoolInterface.dll' for clib package 'school'.
Interface file 'schoolInterface.dll' built in folder 'C:\Users\MATLAB\school'.

To use the library, add the interface file folder to the MATLAB path.
addpath('C:\Users\MATLAB\school')
1 construct(s) need(s) further definition to be included in the interface. 
Use clibgen.generateLibraryDefinition to provide definitions.

addpath リンクをクリックしてインターフェイスをパスに追加します。

ライブラリ内のヘルプを表示します。

help clib.school
Classes contained in clib.school:
Person                         - clib.school.Person    Representation of C++ class Person
Teacher                        - clib.school.Teacher    Representation of C++ class Teacher
Student                        - clib.school.Student    Representation of C++ class Student

この機能を、ヘッダー専用の HPP ファイルsummary(defineschool) コマンドの出力と比較します。このインターフェイスには、次が含まれていません。

Functions
  string clib.school.getName(clib.school.Person)

入力引数

すべて折りたたむ

インターフェイスを生成するための 1 つ以上の C++ ファイル。string 配列、文字ベクトル、または文字ベクトルの cell 配列として指定します。現在のフォルダーまたは MATLAB のパスにない場合、名前にはファイルの絶対パスまたは相対パスが含まれます。

詳細については、関数 clibgen.generateLibraryDefinitionInterfaceGenerationFiles引数を参照してください。

例: "sample.hpp"

データ型: char | string | cell

1 つ以上の共有ライブラリ ファイル名。string 配列、文字ベクトル、または文字ベクトルの cell 配列として指定します。'Libraries' 引数と共に使用します。ライブラリが、'InterfaceGenerationFiles' 引数および 'SupportingSourceFiles' 引数で指定されたファイルにより完全に定義されている場合を除いて、この値が必要です。

詳細については、関数 clibgen.generateLibraryDefinitionLibraryFiles引数を参照してください。

たとえば、次のステートメントを Windows® で実行すると、myLib.lib を使用して C:\myLib\sampleInterface.dll が作成され、現在のフォルダーのサブフォルダー sample に書き込まれます。

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

データ型: char | string | cell

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

詳細については、ヒントの「What files do you have in your library?」を参照してください。

ライブラリがヘッダー ファイルまたは .cpp ソース ファイルにより完全に定義されている場合、共有ライブラリ ファイルは必要ありません。

例: "sample.cpp"

データ型: char | string | cell

名前と値の引数

例: clibgen.buildInterface("myHeader.hpp","Libraries","myHeader.lib","OutputFolder","C:\work");

オプションの Name,Value の引数ペアをコンマ区切りで指定します。Name は引数名で、Value は対応する値です。Name は引用符で囲まなければなりません。Name1,Value1,...,NameN,ValueN のように、複数の名前と値のペアの引数を任意の順序で指定できます。

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

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

データ型: char | string | cell

インターフェイス ファイルの生成に使用するフォルダー名。string スカラーまたは文字ベクトルとして指定します。たとえば、次のステートメントは Windows の C:\work\myHeadermyHeaderInterface.dll を作成します。

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

データ型: char | string | cell

生成されたインターフェイス名。string スカラーまたは文字ベクトルとして指定します。1 つのヘッダー ファイルから作成されたインターフェイスの場合、既定値はヘッダー名です。複数のヘッダー ファイルの場合は、パッケージ名を有効な MATLAB 名として指定しなければなりません。たとえば、次のステートメントは、現在のフォルダーのサブフォルダー mylibmylibInterface ライブラリ ファイルを作成します。

clibgen.buildInterface(["h1.hpp","h2.hpp"],"PackageName","mylib")

データ型: char | string | cell

生成メッセージの表示オプション。true または false として指定します。true の場合、clibgen.buildInterface はインターフェイスの作成中に生成メッセージをコマンド ウィンドウに表示します。たとえば、次のステートメントは、h1Interface ライブラリ ファイルをサブフォルダー h1 に作成し、メッセージをコマンド ウィンドウに表示します。

clibgen.buildInterface("h1.hpp","Verbose",true)

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

データ型: logical

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

R2019b で導入されました。

データ型: logical

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

  • const char *

  • const wchar_t *

  • const char16_t *

  • const char32_t *

データ型: logical

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

データ型: string

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

データ型: string

非オブジェクト C 配列を返すかどうか。true または false として指定します。ReturnCArraystrue の場合、MATLAB は非オブジェクト C 配列の C 配列 (clib.array.*) を返します。false の場合、MATLAB は非オブジェクト C 配列の数値の MATLAB 配列を返します。

データ型: logical

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

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

データ型: logical

制限

  • 一部のロケール設定では非 ASCII 文字がサポートされていない場合があるため、フォルダー名とファイル名にはこれらの文字を使用しないでください。ロケールの詳細については、国際化に向けたロケール設定の概念を参照してください。

代替機能

2 ステップのビルド プロセス

clibgen.buildInterface の代わりに、関数 clibgen.generateLibraryDefinition および関数 build を使用してインターフェイスで欠落している機能を定義します。

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

バージョン履歴

R2019a で導入