我使用ctype(Phyon3.2)从64位Debian Linux机器上的共享库中调用F90例程。如果F90例程采用和类型的参数,
! We're in fortran (F90)
subroutine MyFunc(FooF90)
real(8),intent(in) :: FooF90
! do some stuff...
return我应该从Python传递什么?我的猜测是
# We're in Python3.2
F90func(ctypes.byref(ctypes.c_double(FooPy)))这是正确的吗?我很难找到从Python传递real(n)类型的fortran参数的引用。
提前谢谢。
发布于 2012-10-15 19:45:26
real(8)不是由标准定义的,所以任何事情都可能发生(您应该通过selected_real_kind、iso_c_binding或iso_fortran_env获得种类号)。实际上,对于大多数编译器来说,它等同于c_double。您可能正在使用gfortran,这在默认情况下是有效的。
如果Python解释器在默认情况下希望通过value参数传递,那么可能会有问题。在ctypes中搜索byref()函数。
https://stackoverflow.com/questions/12894841
复制相似问题