MEX 関数を呼び出す MATLAB 関数を C コードに変換できますか?

1 view (last 30 days)
MathWorks Support Team
MathWorks Support Team on 25 Oct 2013
MEX 関数を内部で呼び出している MATLAB 関数を MATLAB Coder で C 言語に変換しようとすると、下記のエラーが発生します。
ここで、CallMexsamp.m が MATLAB 関数、timestwo.mexw64 が MEX 関数名です。
ERROR: ??? MATLAB ファイルのみがコード生成に対してサポートされます。ファイル拡張子 'mexw64' 'C:\MATLAB\samp\timestwo.mexw64' に対してサポートされていません。
エラー ==> CallMexsamp : 7 : 9
コードを生成できません:エラー レポートを開いてください。
エラー codegen

Accepted Answer

MathWorks Support Team
MathWorks Support Team on 23 Feb 2021
Edited: MathWorks Support Team on 23 Feb 2021
代替案として、coder.ceval 関数を利用する方法があります。この関数は、codegen 関数実行時に、指定した外部の C ソースコードを呼び出します。これにより、ユーザ側で用意した C 関数を呼び出すようにプログラミングし、コード生成と MATLAB 上の実行を切り替えることが可能です。
実際に行うには、下記の手順を実施します。
1. MEX-ファイルのコードを、外部から呼び出せるようなCソースコードに変換
2. MATLAB-ファイル(CallMexsamp.m)を下記のように変換
例えば、下記のように MEX 関数を呼び出している場合、
B = timestwo(a)
下記のように書き換えてから、Cコード生成を行います。
B = coder.ceval(timestwo,a)
3. codegen でMATLAB-ファイルをコード生成
coder.ceval 関数の詳細については、下記 URL をご覧ください。
・MATLAB Coder 関数リファレンス:coder.ceval
なお、coder.ceval 関数の戻り値は、1つでかつスカラである必要があります。

More Answers (0)

Tags

No tags entered yet.

Products


Release

R2012a

Community Treasure Hunt

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

Start Hunting!