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_
关于如何修复它的任何想法?”谢谢。
I need to wrap a simply fortran90 code with f2py. The fortran module "test.f90" is
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
and then I wrap it with
f2py -m test -c test.f90
but when I import it in python
In [2]: import test
it prompted me with error saying
ImportError: ./test.so: undefined symbol: ran2_
Any ideas on how to fix it? Thanks.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
在函数 Gasdev 中,您将 ran2 声明为外部函数。当您不链接任何此类函数时,导入模块将会失败。
相反,删除gasdev中ran2的声明,在这种情况下,ran2调用使用模块中ran2函数的显式接口,并且一切正常。
In function gasdev you declare ran2 as an external function. As you then don't link in any such function importing the module will fail.
Instead, remove the declaration of ran2 in gasdev, in which case the ran2 call uses the explicit interface to the ran2 function in the module, and everything works.