シミュレーション中に外部ライブラリ* .aファイルを使用してcコードを参照するModelicaファイルがあります。例えばJModelicaで外部ファイルを参照する
:OpenModelicaにModelicaモデルを開くと
model CallAdd
input Real FirstInput(start=0);
input Real SecondInput(start=0);
output Real FMUOutput(start=0);
function CAdd
input Real x(start=0);
input Real y(start=0);
output Real z(start=0);
external "C" annotation(Library = "CAdd", LibraryDirectory = "modelica://CallAdd");
end CAdd;
equation
FMUOutput = CAdd(FirstInput,SecondInput);
annotation(uses(Modelica(version = "3.2.1")));
end CallAdd;
必要なファイルは、それが適切な結果をシミュレートしていますので、自動的にロードされているように見えます。
しかし、JModelica-SDK-1.12でModelicaファイルをコンパイルしようとすると、ライブラリ* .aファイルが見つからないというエラーが表示されます。
私の質問は:JModelicaでcompile_fmuを使用しているときに追加ファイルを参照する適切な方法は何ですか?ノー成功を収めて
、私が試してみた:
# Import the compiler function
from pymodelica import compile_fmu
model_name = "CallAdd"
mo_file = "CallAdd.mo"
# Compile the model and save the return argument, for use later if wanted
my_fmu = compile_fmu(model_name, mo_file, target="cs",compiler_options = {'extra_lib_dirs':'C:/ToFolderContainingLib/'})
奇妙なことは、私はJModelica-1.17(非SDK)を使用していたときにファイルが正常にコンパイルされていることであるが、結果は意味がありませんでした。以前の投稿hereで私のエラーを修正したかどうかを確認するSDKバージョンを試してみることをお勧めしました。
external "C" annotation(Include="
// the entire C code here
");
がうまくいけば、JModelicaの人々はすぐにあなたのより良い答えを与える:あなたはModelicaコードで直接Cファイルをインクルードしようとすることができ、最後の代替として
こんにちはクリスチャンアンダーソン、問題を修正したようです。どうもありがとうございました! –