C MEX S-Function 内から Windows DLL を呼び出すにはどうすればよいですか?
9 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
C MEX S-Function 内から Windows DLL を呼び出したいです。これを実現しているデモを探しています。
Akzeptierte Antwort
MathWorks Support Team
am 1 Jul. 2015
次の例題は、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 Kommentare
Weitere Antworten (0)
Siehe auch
Kategorien
Mehr zu C MEX ファイル アプリケーション finden Sie in Help Center und File Exchange
Produkte
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!