0

我正在尝试将mycode.FmwPointer 集成到现有的 Fortran 代码中。mycode.F在我尝试进行任何更改之前,我的编译正确。这是一个摘录:

  subroutine mycode(t1,t2,action,p1,p2,Q,flag) 

  implicit none 

  integer IZERO, IUN, IDEUX, ITROIS
  double precision  DZERO,DUN,DDEUX,DTROIS,flag
  parameter (IUN=1,IZERO=0,IDEUX=2,ITROIS=3,DZERO=0.0d0,DUN=0.1D1,DDEUX=0.2D1,DTROIS=0.3D1)

  double precision action, t1, t2, p1, p2, Q
  double precision Q2(10),D(10),time(10),G1(10),G(10,2),F(51) 

  integer i

  print *, 'Lorem'

  end

为了使用engOpen 函数并遵循此 Mathworks 页面,我将代码修改为:

#include         "fintrf.h"
#include         "engine.h"

      subroutine mycode(t1,t2,action,p1,p2,Q,flag,engOpen) 

      implicit none

      integer IZERO, IUN, IDEUX, ITROIS
      double precision  DZERO,DUN,DDEUX,DTROIS,flag 
      parameter (IUN=1,IZERO=0,IDEUX=2,ITROIS=3,DZERO=0.0d0,DUN=0.1D1,DDEUX=0.2D1,DTROIS=0.3D1) 

      double precision action, t1, t2, p1, p2, Q
      double precision Q2(10),D(10),time(10),G1(10),G(10,2),F(51)! 

      integer i

      mwPointer engOpen

      print *, 'Lorem'

      end

但是当我编译时,我得到以下错误:

mwPointer engOpen
1
Error: Unclassifiable statement at (1)
Error: Symbol 'engopen' at (1) has no IMPLICIT type

有人知道如何解决这个问题吗?

谢谢你的帮助

4

1 回答 1

-1

Mathworks 页面给了你不好的,或者至少是不完整的建议。假设您的 Fortran 源代码将通过 cpp 样式的预处理器运行,这在 Fortran 中不是标准的。对于 UNIX/Linux 风格系统上的大多数 Fortran 编译器,使用 .F(大写 F)文件类型将首先通过预处理器运行源代码,但这并不一定会在任何地方发生。(您没有说您使用的是哪个编译器和操作系统。)

研究编译器的文档,如果可用,启用选项以在编译之前让源代码通过预处理器运行。

于 2022-02-07T15:05:46.017 回答