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

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

有帮助吗?

解决方案

在功能CASDEV中,您将RAN2声明为外部功能。因此,您不会在任何此类功能中链接导入模块的任何此类功能。

取而代之的是,请删除Gasdev中RAN2的声明,在这种情况下,RAN2调用使用了对模块中RAN2函数的显式接口,并且一切都起作用。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top