我正在尋找使用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