外部インタフェース/API | ![]() ![]() |
WindowsでのCとFortranのMEX-ファイルの作成には、コンパイル、プレリンク、リンクの3つのステージがあります。
コンパイルステージ
コンパイルステージでは、mex
オプションファイルはつぎのことを行う必要があります。
COMPILER
(例., Watcom), PATH
, INCLUDE
, LIB
環境変数を使ってコンパイラのパスを設定します。コンパイラが常に環境変数のセット(例., AUTOEXEC.BAT
) をもっている場合は、オプションファイル内でそれらのマークを外すことができます。COMPILER
環境変数を使ってコンパイラ名を定義します。COMPFLAGS
環境変数でコンパイラのスイッチを定義します。exe
を作成するスイッチが必要です。
-c
スイッチ(コンパイルのみで、リンクは行いません)を推奨します。
-D
, MATLAB_MEX_FILE
によるプリプロセッサmacro
の定義が必要です。OPTIMFLAGS
とDEBUGFLAGS
を使って最適化スイッチとデバッグスイッチを設定します。これらは排他的です。OPTIMFLAGS
がデフォルトで、mex
のコマンドラインで-g
を指定すればDEBUGFLAGS
が使われます。プレリンクステージ
プレリンクステージは、MEX, MAT, エンジンファイルに要求された関数を読み込むためのインポートライブラリをダイナミックに作成します。すべてのMEX-ファイルは、MATLABのみをリンクします。MATスタンドアロンプログラムは、libmx.dll
(配列のアクセスライブラリ) とlibmat.dll
(MAT-ファンクション)をリンクします。エンジンスタンドアロンプログラムは、libmx.dll
配列のアクセスライブラリ)とエンジンファンクションに対してlibeng.dll
をリンクします。MATLABとDLLは、 <matlab>\extern\include
ディレクトリにある同じ名前の対応する.def
ファイルをもちます。
リンクステージ
最後に、リンクステージでは、mex
オプションファイルは以下のことを行う必要があります。
LINKER
環境変数でリンカ名を定義します。LINKFLAGS
環境変数を定義しなければなりません。exe
を作成するスイッチ。mexFunction
、DIGITAL Visual Fortran.に対してMEXFUNCTION@16
のように、MEX-ファイルへのエントリポイントをエクスポートします。PRELINK_CMDS
ステージで作成したインポートライブラリ。LINKEROPTIMFLAGS
とLINKDEBUGFLAGS
でリンクの最適化スイッチとデバッグスイッチを定義します。コンパイルステージのように、これらは排他的です。デフォルトは最適化で、-g
スイッチがデバッグスイッチを呼び込みます。LINK_FILE
環境変数でリンクファイル識別子を定義します。たとえば、Watcomは、file
の後に続く名前がリンクファイル名であり、コマンドでないことを識別します。LINK_LIB
環境変数でリンクライブラリ識別子を定義します。たとえば、Watcomはlibrary
の後に続く名前がライブラリ名であり、コマンドでないことを識別します。NAME_OUTPUT
環境変数で出力スイッチを使って識別子とファイル名を設定します。環境変数 MEX_NAME
は、コマンドラインの最初のプログラム名を含みます。これを動作させるには、-output
に設定する必要があります。この環境変数が設定されていない場合は、コンパイラのデフォルトは、コマンドラインの最初のプログラム名を使います。設定されていても、mex
-output
スイッチを設定することで書き換えることができます。MEX-ファイルへのDLLのリンク
DLLをMEX-ファイルにリンクするには、コマンドラインでDLLの.lib
ファイルをリストします。
MEX-ファイルのバージョン設定
mex
スクリプトは、バージョン設定やその他の重要な情報を含むリソースファイルと共にユーザのMEX-ファイルを作成します。リソースファイルは、mexversion.rc
という名前で、extern\include
ディレクトリにあります。バージョン設定をサポートするために、リソースコンパイラとリンカコマンドを与える2つの新しいコマンドRC_COMPILER
とRC_LINKER
がオプションファイルにあります。つぎのように考えられます。
Microsoft Visual C++ IDEを使ったMEX-ファイルのコンパイル
注意 この節では、Microsoft Visual C++ (MSVC) IDE(これは、含まれていません)でMEX-ファイルをコンパイルする方法を説明しています。この節では、ユーザはIDEの利用法を理解していると仮定しています。MSVC IDEの利用に関する詳しい情報は、Microsoftのドキュメントを参照してください。 |
Microsoft Visual C++ 統合開発環境を使ってMEX-ファイルを作成するためには、つぎのようにします。
mexversion.rc
を挿入します。.DEF
ファイルを作成します。たとえば、LIBRARY MYFILE.DLL EXPORTS mexFunction <-- C MEX-ファイル または EXPORTS MEXFUNCTION@16 <-- Fortran MEX-ファイル
.DEF
ファイルを追加します。.LIB
ファイルは、matlabroot\extern\lib\win32\microsoft
にあります。たとえば、version 6.0に対しては、これらのファイルは、msvc60
サブディレクトリにあります。LINK
設定オプションでlibmx.lib
, libmex.lib
, libmat.lib
をライブラリモジュールに追加します。include
ディレクトリMATLAB\EXTERN\INCLUDE
をSettings C/C++ Preprocessorオプションのinclude
パスに追加します。MATLAB_MEX_FILE
をタイプすることによりMATLAB_MEX_FILE
をC/C++ Preprocessorオプションに追加します。
MATLAB.EXE
をSettings DebugオプションにExecutable for debug sessionとしておきます。Microsoft Visual C/C++コンパイラ以外のコンパイラを利用している場合は、MEX-ファイルのビルドプロセスは、上述したものと同じです。ステップ4では、利用するコンパイラ用の.LIB
ファイルは matlabroot\extern\lib\win32
のサブディレクトリにあります。たとえば、Borland C/C++ compilerのversion 5.4については、matlabroot\extern\lib\win32\borland\bc54
を見てください。
Visual Studio用アドインの使用法
The MathWorksは、Microsoft Visual C/C++ (MSVC)内で簡単に利用できる Visual Studio®開発システム用のMATLABアドインを提供します。Visual Studio用MATLABアドインは、MSVC環境でのM-ファイルの利用を大きく簡略化します。アドインは、M-ファイルとVisual C++ プロジェクトとの統合を自動化します。MSVC環境と完全に統合されています。
Visual Studio用アドインは、mbuild -setup
あるいはmex -setup
を実行し、Microsoft Visual C/C++ version 5 または6を選択したときに自動的にシステムにインストールされます。しかし、アドインを利用するために以下のステップを行う必要があります。
メニューに従い、Microsoft Visual C/C++ 5.0または6.0を選択します。これにより、選択されたMicrosoft compilerを利用するmex
を作成し、Microsoft Visual C/C++ディレクトリに必要なアドインファイルをインストールします。
注意
Windowsが"システムファイルを表示しない"に設定されている場合は、.dll ファイルは、ディスク上に存在しても表示されません。この機能を利用不可能にするには、表示オプションを変更する必要があります。 |
注意
Windows 95あるいはWindows 98システムでVisual Studio用MATLABアドインを実行するには、config.sys ファイルに以下の行を付け加えます。
|
Visual Studio用MATLABアドインに関する情報は、以下を参照してください。
<matlab>\bin\win32
ディレクトリのMATLABAddin.hlp
ファイルを参照してください。あるいは、![]() | UNIXでの作成のカスタマイズ | トラブルシューティング | ![]() |