Modelica:我可以使用IncludeDirectory在Windows中指定绝对路径吗?

时间:2019-02-08 15:54:55

标签: modelica dymola

很抱歉出现菜鸟问题。我正在尝试学习如何在Modelica模型中集成C函数。我无法理解如何指定外部函数的路径。

我创建了一个外部C函数,并保存在与我的模型目录或工作目录不同的目录中。我以为使用IncludeDirectory批注将允许我引用该C函数的位置,但是我无法使其正常工作。

impure function computeHeat "Modelica wrapper for an embedded C function controller"
input Real T;
input Real Tbar;
input Real Q;
output Real heat;
external "C"annotation(Include="#include<ComputeHeat.c>",IncludeDirectory="E:/temp/source_C");
end computeHeat;

当我尝试编译演示示例模型时,收到以下消息。

编译器消息:

编译和链接模型(Visual C ++)。

dsmodel.c dsmodel.c(10):致命错误C1083:无法打开包含文件:'ComputeHeat.c':没有此类文件或目录

生成Dymosim时出错。

1 个答案:

答案 0 :(得分:4)

IncludeDirectory应该是一个URI,并且Dymola当前仅支持modelica-URI。

因此,将函数computeHeat存储在例如e:/temp/computeHeat.mo 并使用IncludeDirectory="modelica://computeHeat/source_C"

通常,我会假设computeHeat是作为MyPackage存储的软件包e:/temp/MyPackage/package.mo的一部分(还有更多文件,例如computeHeat.mo)。

在这种情况下,请创建e:/temp/MyPackage/Resources/source_C并使用IncludeDirectory="modelica://MyPackage/source_C",推荐使用后一种情况,因为您可以将MyPackage复制为目录,然后跟随其来源。