nye*_*e17 2 python fortran 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
Run Code Online (Sandbox Code Playgroud)
然后我用它包装
f2py -m test -c test.f90
Run Code Online (Sandbox Code Playgroud)
但是当我在python中导入它时
In [2]: import test
Run Code Online (Sandbox Code Playgroud)
它提示我说错误
ImportError: ./test.so: undefined symbol: ran2_
Run Code Online (Sandbox Code Playgroud)
关于如何修复它的任何想法?谢谢.
在函数gasdev中,您将run2声明为外部函数.当你没有链接任何这样的功能导入模块将失败.
相反,删除gasdev中的ran2声明,在这种情况下,ran2调用使用模块中的ran2函数的显式接口,一切正常.
| 归档时间: |
|
| 查看次数: |
2291 次 |
| 最近记录: |