主要内容

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

loadlibrary

C共有ライブラリをMATLABに読み込む

説明

loadlibrary (库名hfileは,ヘッダーファイルhfileに定義されているC共有ライブラリ库名から関数をMATLAB®に読み込みます。関数loadlibraryはCから呼び出せる関数およびCコンパイラによって解析可能なヘッダーファイルの呼び出しのみをサポートします。c++で記述された関数は外来的“C”として宣言しなければなりません。あるいは、c++ライブラリの関数を呼び出すには,MATLAB c++ラのイブラリを参照してください。

ヘッダーファイルの名前がライブラリファイルの名前と同じである場合,loadlibrary (库名はライブラリを読み込みます。

loadlibrary (库名hfile名称,值は1つ以上の名称,值引数のペアをもつライブラリを読み込みます。

loadlibrary (库名,@protofileは,ヘッダーファイルの代わりにプロトタイプファイルprotofileを使用します。

notfound警告) = loadlibrary (___は警告情報を返し,前述の構文の任意の入力引数を含むことができます。

すべて折りたたむ

例子フォルダーへのパスを追加します。

目录(fullfile (matlabroot,“外来的”“例子”“shrlib”))

ライブラリ内の関数を表示します。

如果不是(libisloaded (“shrlibsample”) loadlibrary (“shrlibsample”结束libfunctions (“shrlibsample”
函数在库shrlibsample: addDoubleRef exlocteddoublevalue printExportedDoubleValue addMixedTypes getListOfStrings readEnum addStructByRef multDoubleArray stringToUpper addStructFields multDoubleRef allocateStruct multiplyShort deallocateStruct print2darray

クリーンアップします。

unloadlibraryshrlibsample

mylibライブラリとヘッダーファイルmylib.hがあるとします。ヘッダーファイルにはステートメントとして# include header2.hが含まれています。header2.hで定義されている関数を使用するには,addheaderオプションを使用してloadlibraryを呼び出します。

loadlibrary (“mylib”“mylib.h”“addheader”“header2”
如果libisloaded (“shrlibsample”) unloadlibrary (“shrlibsample”其他的目录(fullfile (matlabroot,“外来的”“例子”“shrlib”))结束

shrlibsampleライブラリに自由というエイリアス名を作成します。

loadlibrary (“shrlibsample”“shrlibsample.h”“别名”“自由”

このエイリアス名を使用して関数stringToUpperを呼び出します。

str ='这是一个混合情况字符串';calllib (“自由”“stringToUpper”str)
ans = 'THIS WAS A MIXED CASE STRING'

クリーンアップします。

unloadlibrary自由

shrlibsampleとそのヘッダーファイルshrlibsample.hを含むフォルダーへのパスを追加します。

目录(fullfile (matlabroot,“外来的”“例子”“shrlib”))

ヘッダーファイルshrlibsample.hにはヘッダーファイルshrhelp.hが含まれています。shrhelp.hc: \工作などの別のフォルダーにある場合,“includepath”オプションを使用して,MATLABにファイルの場所を示します。

loadlibrary (“shrlibsample”“shrlibsample.h”“includepath”“c: \工作”

クリーンアップします。

unloadlibraryshrlibsample

次の例では,MATLABshrlibsampleライブラリの関数名addMixedTypesをエイリアス名addtypeに置き換える方法を説明します。エイリアス名を定義するには,プロトタイプファイルを作成してから,このファイルをヘッダーファイルに使用してライブラリを読み込みます。

書き込み権限のあるフォルダーを使用します。

cd (“c: \工作”

プロトタイプファイルmxproto.mを作成します。

hfile = fullfile (matlabroot,“外来的”“例子”“shrlib”“shrlibsample.h”);[notfound,警告]= loadlibrary (“shrlibsample”hfile,“mfilename”“mxproto”

MATLABによって,現在のフォルダーにプロトタイプファイルが作成されます。警告メッセージは無視してください。

プロトタイプファイルにエイリアス名を追加します。MATLABエディターでファイルを開きます。

编辑mxproto.m

関数addMixedTypesを検索します。

次のステートメントは,エイリアスaddtypeを割り当てます。

fcns.alias {fcnNum} = ' addtype ';

このステートメントを,fcnNumをインクリメントするステートメントの前の行に追加します。新しい関数プロトタイプは以下のようになります(新たに追加したステートメントを太字で表記)。

addMixedTypes (short, int, double);fcns.thunkname {fcnNum} = ' doubleint16int32doubleThunk ';fcns.name {fcnNum} = ' addMixedTypes ';fcns.calltype {fcnNum} =“铛”;fcns.LHS {fcnNum} = '双层';fcns。RHS {fcnNum} = {int16, int32,“双”};fcns.alias {fcnNum} = ' addtype ';%定义别名fcnNum = fcnNum + 1;%增加fcnNum

プロトタイプファイルを使用してshrlibsampleを再び読み込みます。

unloadlibraryshrlibsampleloadlibrary (“shrlibsample”@mxproto)

エイリアス名を使用して関数を呼び出します。

calllib (“shrlibsample”“addtype”int16 (127), int32(33000),π)
ans = 3.3130 e + 04

クリーンアップします。

unloadlibraryshrlibsample

入力引数

すべて折りたたむ

共有ライブラリの名前。文字ベクトルとして指定します。名前の大文字と小文字は区別され、システム上のファイルと一致しなければなりません。

微软®窗户®システムでは,库名は共有ライブラリ(. dll)ファイルの名前を参照します。Linux®システムでは,共有オブジェクト(所以)ファイルの名前を参照します。苹果Macシステムでは,動的共有ライブラリ(. dylib)を参照します。库名の引数にファイル拡張子を含めない場合,関数loadlibraryは,適切なプラットフォームの墨西哥人ファイル拡張子または適切なプラットフォームのライブラリ拡張子のいずれかでライブラリを見つけようとします。墨西哥人ファイル拡張子のリストは,mexextを使用してください。

MATLABは库名の名前の部分を抽出して,他の共有ライブラリ関数のライブラリを識別します。たとえば,関数calllibを呼び出すときに,ライブラリの引数名にパスやファイルの拡張子を含めないでください。

データ型:字符

Cヘッダーファイルの名前。文字ベクトルとして指定します。名前の大文字と小文字は区別され,システム上のファイルと一致しなければなりません。ファイル名にファイル拡張子を含めない場合は,loadlibraryは拡張子として. hを使用します。

データ型:字符

プロトタイプファイルの名前。文字ベクトルとして指定します。名前は大文字と小文字が区別され、システム上のファイルと一致しなければなりません。@protofileは,プロトタイプファイルへの関数ハンドルを指定します。プロトタイプファイルを使用する場合,唯一有効な名称,值の引数ペアは别名です。

データ型:字符

名前と値のペアの引数

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

例:loadlibrary(‘mylib’,‘mylib.h’,‘addheader’,‘header2’)

ヘッダーファイル。”addheader“と文字ベクトルから成るコンマ区切りのペアとして指定します。ファイル名をファイル拡張子なしで指定します。

addheaderで指定された各ファイルでは,対応する# includeステートメントがベースヘッダーファイル内に含まれていなければなりません。ヘッダーファイルで定義された、MATLAB で使用する関数のみを読み込むには、addheaderを使用します。

MATLABは複数のヘッダーファイルの存在を検証せず,不必要なファイルは無視します。

ライブラリの代替名。”别名“と文字ベクトルから成るコンマ区切りのペアとして指定されます。指定された名前をライブラリと関連付けます。このライブラリを参照するMATLAB関数のその後のすべての呼び出しは,ライブラリがアンロードされるまでこのエイリアスを使用しなければなりません。

下位ヘッダーファイル(ヘッダーファイル内のヘッダーファイル)を検索するための追加のパス。”includepath“と文字ベクトルから成るコンマ区切りのペアとして指定します。

プロトタイプファイル。”mfilename“と文字ベクトルから成るコンマ区切りのペアとして指定します。現在のフォルダーでプロトタイプファイルを生成します。プロトタイプファイル名はライブラリ名と異なっていなければなりません。ライブラリを読み込む際、ヘッダー ファイルの代わりにこのファイルを使用します。

铛ファイル。”thunkfilename“と文字ベクトルから成るコンマ区切りのペアとして指定します。既定の铛ファイル名をオーバーライドします。

出力引数

すべて折りたたむ

细胞配列として返される,ヘッダーファイルにはあるがライブラリにはない関数の名前。

データ型:细胞

文字配列として返される,ヘッダーファイル処理中に生成された警告。

制限

  • サポートされているCコンパイラが必要で,Perlが使用可能でなければなりません。

  • ライブラリが既にメモリに読み込まれている場合は,loadlibraryを呼び出さないでください。この条件をテストするには,libisloadedを呼び出します。

  • loadlibraryは,MATLAB编译器SDK™およびMATLAB编码器などのコード生成製品で生成されるライブラリをサポートしません。

  • MATLAB共有ライブラリインターフェイスは,関数ポインターを入力とするライブラリ関数をサポートしていません。

  • 詳細については,共有ライブラリのサポートの制限を参照してください。

詳細

すべて折りたたむ

プロトタイプファイル

プロトタイプファイルは,編集してヘッダーファイルの代わりに使用可能なMATLABコマンドのファイルです。

铛ファイル

铛ファイルは,MATLABで生成された64ビットライブラリへの互換レイヤーです。铛ファイルの名前はBASENAME_thunk_COMPUTER.cです。ここでBASENAMEは共有ライブラリの名前か,mfilenameプロトタイプ名(指定されている場合)のいずれかです。电脑は,関数电脑が返すテキストです。

MATLABはこのファイルをコンパイルし,ファイルBASENAME_thunk_COMPUTER。LIBEXTを作成します。ここで,LIBEXTは,Windowsのdllのような,プラットフォーム依存の既定の共有ライブラリ拡張子です。

ヒント

  • 同じ名前のライブラリファイルが2つ以上ある場合,ライブラリファイル名を使用して最初のライブラリファイルを読み込みます。次に,别名オプションでその他のライブラリを読み込みます。

  • 别名オプションをライブラリの別名として使用します。別のヘッダーファイルを読み込みむには引数@protofileを使用します。

R2006aより前に導入