| 外部インタフェース/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での作成のカスタマイズ | トラブルシューティング | ![]() |