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

1 次查看(过去 30 天)
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
代替案として、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!