我正在寻找使用ctypes来调用几年前由我的老板编写的一些老的fortran库。我按照this previous question中给出的例子,我得到了预期的结果。使用ctypes从Python调用fortran函数
然而,当我修改代码,以获得稍微接近我所面临的局面,让
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
即函数现在是real
,不integer
,返回的值始终为0
。任何人都可以解释发生了什么以及我应该如何解决这个问题?
(PS。我用在Mac OS雪豹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
预期之间的不同...
为什么不使用NumPy附带的Fortran FFI内容? – 2012-03-26 03:57:12
你的意思是f2py?这对我的系统造成了很多麻烦,我认为这将是一个很好的短期解决方案。理论上! – samb8s 2012-03-26 03:59:05
你可以尝试'addtwo = real(a + b)',它能修复它吗? – 2012-03-26 04:00:49