3

2 つの静的ライブラリを使用する C アプリケーションがあります。これらのライブラリのソース コードは、Simulink/MATLAB によって生成およびビルドされます。
問題は、Simulinkがブロック "Uniform Random Number"の extern 非静的関数
real_T rt_urand_Upu32_Yd_f_pw(uint32_T *u)を各モデルのファイル MyModel.c に生成することです。これらのライブラリを C アプリケーションに含めると、関数の再定義のリンカ エラーが発生しました。

Simulink でコード生成プロセスを変更する方法はありますか?

4

1 に答える 1

2

私が理解しているあなたの問題: 2 つのライブラリは、両方ともこのブロックを使用する 2 つの異なる Simulink モデルから生成されるため、明らかに Simulink Coder は、それらの両方を使用する必要があることを認識できず、同じ関数を 2 回生成します。

ライブラリを 2 つではなく 1 つだけ使用しても問題ない場合は、私の頭の中でいくつかの提案を以下に示します。

提案: 両方のモデルをモデル参照として 1 つの最上位モデルに入れます。コードを生成します。Simulink Coder は、ブロックが両方のモデルで使用されていることを認識し、関数を 1 回だけ生成します。

提案 2: 別の C ファイルにパッケージ化された関数を使用して、サブシステム内の Uniform Random Number ブロックをラップします。両方のモデルの生成されたソース ファイルを一緒にコンパイルし、個別に生成した C ファイルのコピーの 1 つを削除します。

関数パッケージのパラメーター

于 2013-09-05T15:02:09.857 に答える