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

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

採用された回答

MathWorks Support Team
MathWorks Support Team 2021 年 2 月 23 日
編集済み: MathWorks Support Team 2021 年 2 月 23 日
代替案として、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つでかつスカラである必要があります。

その他の回答 (0 件)

タグ

タグが未入力です。

製品


リリース

R2012a

Community Treasure Hunt

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

Start Hunting!