C MEX S-Function 内から Windows DLL を呼び出すにはどうすればよいですか?
32 ビュー (過去 30 日間)
古いコメントを表示
C MEX S-Function 内から Windows DLL を呼び出したいです。これを実現しているデモを探しています。
採用された回答
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 件のコメント
その他の回答 (0 件)
参考
カテゴリ
Help Center および File Exchange で Block and Blockset Authoring についてさらに検索
製品
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!