我无法让 f2py 在用于定义输入数组维度的单独子例程中引用来自模块的参数。即参数在模块中定义:
! File: testmod.f90
MODULE testmod
INTEGER, PARAMETER :: dimsize = 20
END MODULE testmod
并且参数 dimsize 需要在另一个文件的子例程(不包含在模块中)中引用,这将是我的 python 模块的入口点:
! File testsub.f90
SUBROUTINE testsub(arg)
USE testmod
REAL, INTENT(IN) :: arg(dimsize)
END SUBROUTINE testsub
我这样编译:
f2py -m testmod -h testmod.pyf testsub.f90
pgf90 -g -Mbounds -Mchkptr -c -fPIC testmod.f90 -o testmod.o
pgf90 -g -Mbounds -Mchkptr -c -fPIC testsub.f90 -o testsub.o
f2py -c testmod.pyf testmod.o testsub.o
但得到这个错误:
testmodmodule.c: In function 'f2py_rout_testmod_testsub':
testmodmodule.c:180: error: 'dimsize' undeclared (first use in this function)
我已尝试修改 testsub.g90 以包含以下指令,正如其他帖子所建议的那样:
SUBROUTINE testsub(arg)
USE testmod
!f2py integer, parameter :: dimsize
REAL, INTENT(IN) :: arg(dimsize)
END SUBROUTINE testsub
但无济于事。我需要将子程序与模块分开。
如何让 f2py 正确解析变量dimsize
?
TIA