用ctypes从Python调用fortran函数

2024-09-27 07:30:23 发布

您现在位置:Python中文网/ 问答频道 /正文

我想用ctypes来调用我老板几年前写的一些旧的fortran库。我遵循了this previous question中给出的示例,得到了预期的结果。在

但是,当我修改代码时,为了稍微接近我所面临的情况,所以

integer function addtwo(a, b)
  integer, intent(in) :: a, b
  addtwo = a + b
end function

变成

^{pr2}$

也就是说,函数现在是real,而不是integer,返回的值总是0。有人能解释一下发生了什么事吗?我该怎么解决这个问题?在

(注:我正在mac os snow leopard上使用64位gfortran编译器)

编辑:我正在处理的函数看起来像:

real function ykr(seed)

  integer, intent(in) :: seed
  real ykr0
  ykr= real(seed)
end function

实际上,ykr递归地调用另一个函数,ykr0,但是由于我在这个基本方面都很挣扎,所以我暂时忽略了这一点。我看不出这段代码和上面的代码有什么不同,但是调用ykr_(byref(c_int(4)))返回{},而不是预期的{}。。。在


Tags: 函数代码infunctionintegerctypesreal老板
1条回答
网友
1楼 · 发布于 2024-09-27 07:30:23

添加线条

ykr_.restype = c_float

在python代码中,ykr_(byref(c_int(4)))之前。 这将函数的返回类型设置为float(或者在Fortan语言中是real)。在

在最初的帖子中,这是不必要的,因为int被假定为默认值。在

相关问题 更多 >

    热门问题