代碼調用時是:的Fortran`讀取(*,*)`在DLL導致 「運行時錯誤(39)」,在VB6.0 VB6.0從
Private Declare Sub suba Lib "D:\try_vb\c_dll\Dll1\Dll1\Debug\Dll1.dll" (ByRef a As Single, ByRef b As Single, ByRef c As Single)
Private Sub Command1_Click()
Dim a As Single
Dim b As Single
Dim c As Single
a = 10#
b = 2#
Call suba(a, b, c)
Text1.Text = c
End Sub
代碼使用Fortran的DLL是:
subroutine suba(a,b,c)
!DEC$ ATTRIBUTES stdcall,DLLEXPORT ::suba
!DEC$ ATTRIBUTES ALIAS:"suba"::suba
!DEC$ ATTRIBUTES reference :: a,b,c
implicit none
real::a
real::b
real::c
real::aaa
c=a+b
read(*,*)aaa !This sentence seems wrong
end subroutine
如果行read(*,*)aaa
不存在,該程序可以返回正確的答案c=12
,見下圖:
但當read(*,*)aaa
存在S,一個錯誤發生了,那就是
forrtl:severe(39):error during read,unit -4,file CONIN$
我應該怎麼辦?
什麼是Fortran/MD或/ MT的鏈接模型?讀取試圖從控制檯讀取。如果你處理VB的所有讀取操作並且只是在Fortran中進行計算,那將會更好。 – cup
我不建議混合來自兩種不同語言的I/O。只有一個人應該閱讀和寫作。 –