Modelica:我可以使用 IncludeDirectory 在 Windows 中指定绝对路径吗?
Modelica: Can I use IncludeDirectory to specify an absolute path in Windows?
抱歉这个菜鸟问题。我正在尝试学习如何在 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 时出错。
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
复制为一个目录,源代码如下。
抱歉这个菜鸟问题。我正在尝试学习如何在 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 时出错。
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
复制为一个目录,源代码如下。