基于 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。它将解决问题。
我正在尝试向 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。它将解决问题。