4

我需要用 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_

关于如何解决它的任何想法?谢谢。

4

1 回答 1

6

在函数 gasdev 中,您将 ran2 声明为外部函数。当您不链接任何此类功能时,导入模块将失败。

相反,删除gasdev中ran2的声明,在这种情况下,ran2调用使用模块中ran2函数的显式接口,一切正常。

于 2011-10-18T09:06:51.690 回答