f2py 错误:未定义的符号

发布于 2024-12-10 05:31:46 字数 682 浏览 3 评论 0原文

我需要用 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

迷乱花海 2024-12-17 05:31:46

在函数 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.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文