f2py 错误:未定义符号
我需要用 f2py 来封装一段简单的 Fortran90 代码。这个 Fortran 模块叫做 "test.f90",内容是:
module util
contains
FUNCTION gasdev(idum)
implicit none
INTEGER(kind=4), intent(inout) :: idum
REAL(kind=8) :: gasdev, ran2
print*,idum
gasdev = ran2(idum)
return
END FUNCTION
FUNCTION ran2(idum)
implicit none
INTEGER(kind=4), intent(inout) :: idum
REAL(kind=8) :: ran2
print*,idum
ran2=2.D0
return
END FUNCTION
end module util
然后我用下面的代码进行了封装:
f2py -m test -c test.f90
但是当我在 Python 中导入它时,出现了一个错误提示:
In [2]: import test
错误信息是:
ImportError: ./test.so: undefined symbol: ran2_
有没有什么办法可以解决这个问题?谢谢。
1 个回答
7
在函数gasdev中,你把ran2声明成了一个外部函数。但是因为你没有链接任何这样的函数,所以导入这个模块的时候会出错。
相反,你可以把gasdev中的ran2声明去掉,这样ran2的调用就会使用模块中ran2函数的明确接口,这样一切就能正常工作了。