C MEX S-Function 内から Windows DLL を呼び出すにはどうすればよいですか?

32 ビュー (過去 30 日間)
MathWorks Support Team
MathWorks Support Team 2010 年 3 月 12 日
C MEX S-Function 内から Windows DLL を呼び出したいです。これを実現しているデモを探しています。

採用された回答

MathWorks Support Team
MathWorks Support Team 2015 年 7 月 1 日
次の例題は、C MEX S-Function から DLL で定義した関数を呼び出す方法を紹介したものです。例題は、2 倍した値を戻す単純な 'timestwo' です。ページ下部の関連ドキュメントに、この例題を実行するために必要なファイルが添付されています。
1. Source1.c: ‘timestwo’ 関数のコード
2. Source1.h: 関数宣言
3. Source1.exports: コンパイラから必要とされる
4. mytimestwo.c: これから作成する 'Source1.dll' 内に存在する 'timestwo' 関数にコールされる C MEX S-Function
実行手順
1. 適切なコンパイラーを選択します。この例題では LCC コンパイラが使用可能です。MATLAB コマンドプロンプトより次のコマンドを実行して、コンパイラを選択してください。
mbuild -setup
2. 'Source1.c' コードをから DLL を作成するために、MATLAB コマンドプロンプトから次のコマンドを実行してください。
mbuild Source1.c Source1.exports
これによって、ワーキングディレクトリに下記のファイルが作成されます。
Source1.dll
Source1.exp
Source1.lib
3. システムパスに、DLL が存在するディレクトリを追加します。
4. 'mytimestwo.c' は、手順2.で作成した 'Source1.dll' の中に存在する 'timestwo' 関数をコールする C MEX S-Function です。この MEX 関数をコンパイルする前に、MATLAB コマンドプロンプトより下記コマンドをタイプして、適切なコンパイラ(LCCなど)を設定してください。
mex -setup
5. 下記のコマンドを実行して 'mytimestwo.c' をコンパイルしてください。
mex -v mytimestwo.c Source1.lib
6. Constant Source ブロック、S-Function ブロック、Display Sink ブロックを含んだ新規の Simulink モデルを作成してください。
7. S-Function ブロックをダブルクリックし、S-Function 名に 'mytimestwo' を指定しして、 S-Function ブロックダイアログの 'OK' をクリックしてください。
8. Source ブロックに 3 の値を指定し、モデルを実行してください。Display ブロックの値が、6 になるのがご確認いただけます。

その他の回答 (0 件)

カテゴリ

Help Center および File ExchangeBlock and Blockset Authoring についてさらに検索

タグ

製品

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!