【问题标题】:Modelica: Can I use IncludeDirectory to specify an absolute path in Windows?Modelica:我可以使用 IncludeDirectory 在 Windows 中指定绝对路径吗?
【发布时间】:2019-02-08 15:54:55
【问题描述】:

很抱歉这个菜鸟问题。我正在尝试学习如何在 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 时出错。

【问题讨论】:

    标签: modelica dymola


    【解决方案1】:

    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 复制为目录,源代码如下。

    【讨论】:

    • 所以一般来说我必须将我的 C 函数“目录”或“数据库”放在包文件夹中?例如,我可以将所有 C 函数放在共享网络驱动器“X”上,将包放在本地驱动器“C”上吗?
    猜你喜欢
    • 1970-01-01
    • 2016-06-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多