gpt4 book ai didi

python - 使用 ctypes 从 Python 调用 fortran 函数

转载 作者:太空狗 更新时间:2023-10-30 02:49:04 25 4
gpt4 key购买 nike

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

但是,当我修改代码时,稍微接近我面临的情况,这样

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

成为

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

即,函数现在是实数,而不是整数,返回值始终是0。谁能解释发生了什么以及我应该如何解决这个问题?

(PS。我在 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))) 返回 0,而不是 4如预期...

最佳答案

添加行

ykr_.restype = c_float

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

在原来的帖子中,这是没有必要的,因为 int 被假定为默认值。

关于python - 使用 ctypes 从 Python 调用 fortran 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9866412/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com