我希望使用 ctypes 来调用一些旧的 Fortran 库,这些库是我老板几年前编写的。我按照中给出的例子进行操作上一个问题 https://stackoverflow.com/questions/5811949/call-functions-from-a-shared-fortran-library-in-python,我得到了预期的结果。
但是,当我修改代码时,为了稍微接近我面临的情况,这样
integer function addtwo(a, b)
integer, intent(in) :: a, b
addtwo = a + b
end function
becomes
real function addtwo(a, b)
integer, intent(in) :: a, b
addtwo = a + b
end function
即,该函数现在是real
, not integer
,返回的值始终是0
。谁能解释一下发生了什么事以及我应该如何解决这个问题?
(PS。我在 mac os 雪豹上使用 64 位 gfortran 编译器)
EDIT:我正在努力解决的功能看起来像:
real function ykr(seed)
integer, intent(in) :: seed
real ykr0
ykr= real(seed)
end function
Really, ykr
调用另一个函数,ykr0
,递归地,但由于即使在这个基本方面我也很挣扎,所以我现在忽略它。我看不出这段代码和上面的代码有什么不同,但是调用ykr_(byref(c_int(4)))
回报0
, not 4
正如预期的那样...