我想教自己從VB調用fortran子程序。我正在嘗試使用非常簡單的示例,但不知何故,它不起作用。我正在使用Visual Studio 2010和Intel Visual Fortran。這裏是我正在嘗試的代碼:在VB中使用Fortran DLL
SUBROUTINE ARRAYTEST(arr)
!DEC$ ATTRIBUTES DLLEXPORT, ALIAS:"ARRAYTEST" :: ARRAYTEST
REAL arr(3, 7)
INTEGER i, j
DO i = 1, 3
DO j = 1, 7
arr (i, j) = 11.0 * i + j
END DO
END DO
END SUBROUTINE
而且它成功創建DLL文件。這裏是我的Visual Basic代碼:
Public Class Form1
Private Declare Sub ARRAYTEST Lib "FortTest.DLL" Alias "ARRAYTEST" (ByVal x As Single)
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim arr(0 To 2, 0 To 6) As Single
Call ARRAYTEST(arr(0, 0))
TextBox1.Text = arr(3, 3)
End Sub
End Class
當我把DLL文件的目錄,並運行代碼,我得到了以下錯誤: 型「System.AccessViolationException」的第一次機會異常出現在ForRun.exe
我使用Google搜索,但沒有找到解決方案,如果有人能告訴我我做錯了什麼,以及如何解決這個問題,我會非常感激。提前謝謝你。
從未使用過fortran,但顯然sub需要一個指向'real'的指針,並且傳遞一個實際的'real',將其解釋爲指針。嘗試將[x()As Single'和marshalling聲明爲[LPArray](http://msdn.microsoft.com/zh-cn/library/system.runtime.interopservices.unmanagedtype.aspx):'Private Declare Sub ARRAYTEST Lib「 FortTest.DLL「Alias」ARRAYTEST「( ByVal x()As Single)'。 –
GSerg