基于 OpenModelica Fortran 的外部函数 read\write 错误

OpenModelica Fortran based External Function read\write error

我正在尝试向 OpenModelica 1.13.0 添加外部 FORTRAN 代码。我的函数和模型定义是正确的,FORTRAN 代码正常工作。但是每当我向代码添加 write(*,*) 或 read(*,*) 方法时,我都会收到以下错误作为 OpenModelica Simulation 输出:

undefined reference to _gfortran_transfer_real_write@@GFORTRAN_1.4

我想知道如何解决这个问题。

谢谢。

这(可能)发生是因为您没有 linking gfortran 与模拟。如果库是共享的(so,DLL,dylib),依赖关系通常会自动处理,所以你可能正在尝试 link 静态库(.a)或目标文件(.o,.obj)。

在您的外部函数中,添加一个注释 Library="gfortran" 或者因为您可能已经在其中添加了您的库,Library={"mylib", "gfortran"}

另请注意,OpenModelica 1.13 已经过时,应该升级。

对于 OMShell,可以调用 setCFlags("-lgfortran") 或在 OMEdit 中在模拟设置 > 常规 > C/C++ 编译器标志中添加 -lgfortran。它将解决问题。