很抱歉出现菜鸟问题。我正在尝试学习如何在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时出错。
答案 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
复制为目录,然后跟随其来源。