我无法让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
ifort
相同的问题。问题似乎发生在第一个f2py调用处,我看到以下错误:In: :testmoddd:testsub.f90:testsub get_useparameters: no module testmod info used by testsub In: :testmoddd:testsub.f90:testsub getarrlen:variable "dimsize" undefined
- bdforbes