1

我写了一个 Fortran 代码,并把它做成了 TestDLL.dll 和 TestDLL.lib 文件。我想在 OpenModelica 中使用它。但是Modelica说

在以下任何一个中都找不到库 TestDLL:~~~

我将 .dll 和 .lib 文件放入E:\MODELICAEXAM(我的 modelica 工作空间)或E:\MODELICAEXAM\MyPackage\Resouces,但它不起作用。

我阅读了描述“注释”的 ModelicaSpec34 文档(12.9.4),但我真的很困惑什么是“modelica://”。

所以我有两个问题:

  1. 我可以在modelica中使用fortran dll吗?
  2. 如果第一个问题没问题,我应该把我的 lib 和 dll 文件放在哪里让 modelica 找到这些文件?还是我误解了这个问题?

代码如下

function SUB(a,b)
!DEC$ ATTRIBUTES DLLEXPORT::SUB
    implicit none
    real :: a,b
    real :: SUB
    SUB = a+b
return
end

模型部分

model test
    function sub
       input Real a;
       input Real b;
       output Real Result;
       external "C" Result = sub(a, b);
       annotation(
       Library = "TestDLL",
       LibraryDirectory = 
           "modelica://MyPackage/Resouces");
    end sub;

    Real result;
    parameter Real a = 1;
    parameter Real b = 2;
equation
    result = sub(a, b);
end test;!
4

1 回答 1

0

感谢您的回答。我已经解决了这个问题。Fortran 自动将变量转换为大写形式。当我在modelica中使用这个函数时,我必须使用大写形式来调用该函数。“modelica://”表示文件所在的文件夹。mo 文件所在的位置。

于 2019-11-25T04:08:28.113 回答