就像前鋒一樣,在Fortran中,我是一個完整的初學者。我花了很長時間來看看其他問題,但我無法找到類似的問題,所以請原諒我,如果我的解決方案是明顯的,或已經被回答:)通過簡單的Fortran函數返回的奇數值
我是試圖學習如何在VB.net應用程序中正確實現一個自寫的Fortran DLL。我已經能夠讓VB識別DLL,並且沒有任何錯誤地執行該函數。與實際產出相比,錯誤來自預期產出。
我Fortran的DLL函數如下:
function ex(i)
integer*4 i
ex=i+1
return
end
一個非常簡單的函數,每次遞增傳遞的參數和返回值。 (我認爲)。 VB應用程序有以下代碼。
<DllImport("ex.dll")> _
Public Shared Function ex(ByRef val As Integer) As Integer
End Function
Private Sub btn_Fortran_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_Fortran.Click
Console.WriteLine(ex(1))
End Sub
所以,我通過ex函數的整數值1.所以我期望值2寫入控制檯。相反,我得到的值「1073741824」不完全相等。任何想法,我明顯不足?
我只是猜測,所以這是一個評論。但是,似乎傳遞常量1可能不正確,因爲導入參數被定義爲ByRef。事實上,在我看來,它不應該建立。嘗試聲明一個整數並將其傳遞給'ex'。除此之外,如果它是一個param問題或返回值本身,我會試圖縮小範圍。改變你的函數'ex'來簡單地返回一個常量;這可能有助於確定傳入的參數是否錯誤或返回值是否無法正確恢復。 – 2010-08-19 23:06:41