кодекса VB6.0 является:Fortran `чтения (*, *) 'в DLL вызывает "ошибка времени выполнения (39)" при вызове из 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
Я не могу рекомендовать смешивать ввод-вывод с двух разных языков. Только один должен читать и писать. –