1

外部ライブラリ *.a ファイルを介してシミュレーション中に C コードを参照する 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;

OpenModelica で Modelica モデルを開くと、シミュレートして適切な結果が得られるため、必要なファイルが自動的に読み込まれるように見えます。

しかし、Modelica ファイルを JModelica-SDK-1.12 でコンパイルしようとすると、ライブラリ *.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) を使用していたとき、ファイルは正常にコンパイルされましたが、結果は意味を成しませんでした。SDK バージョンを試して、以前の投稿でのエラーが修正されたかどうかを確認するように勧められまし

4

2 に答える 2

2

現在使用しているプラ​​ットフォームの名前のサブフォルダーに外部ライブラリを配置してみてください。したがって、あなたの例では、64 ビット Linux マシンを使用しているため、ライブラリ (libCAdd.a) を linux64 という名前のサブフォルダーに配置し、コードを実行します。

于 2016-09-04T13:27:04.557 に答える