我想用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)))
返回{
添加线条
在python代码中,
ykr_(byref(c_int(4)))
之前。 这将函数的返回类型设置为float
(或者在Fortan语言中是real
)。在在最初的帖子中,这是不必要的,因为int被假定为默认值。在
相关问题 更多 >
编程相关推荐