У меня есть следующий пример кода test.f90,
, который я пытаюсь скомпилировать, используя Lahay Fortran (x32-bit) на моем компьютере с Windows 10 (x64-bit).
! Computes the square of a number
Subroutine sr1(a,b)
implicit none
#ifdef COMPILER_GF
!DEC$ ATTRIBUTES DLLEXPORT::sr1
!DEC$ ATTRIBUTES C, REFERENCE, ALIAS:'sr1' :: sr1
#endif
#ifdef COMPILER_IF
!DEC$ ATTRIBUTES DLLEXPORT, STDCALL ::sr1
!DEC$ ATTRIBUTES DECORATE, ALIAS : 'sr1' :: sr1
!DEC$ ATTRIBUTES REFERENCE :: a,b
#endif
#ifdef COMPILER_LF
dll_export sr1
#endif
integer a,b
b = a*a
End Subroutine sr1
В командной строке Lahay Fortran следующая строка делает все и создает test.DLL
.
lf95 test.f90 -win -dll -lfe- "-Cpp" -lfe "DCOMPILER_LF" -ml msvb
Теперь я пытаюсь прочитать .DLL
в R (x32-bit)
, используя:
dyn.load("path_to_file/test.dll")
is.loaded("sr1")
#Returns TRUE
DLL
загружается в R
штраф.Но когда я пытаюсь вызвать подпрограмму, R
вылетает здесь:
.Fortran("sr1", a=as.integer(2), b=as.integer(4))
# R crashes here
У кого-нибудь есть идеи, почему или как можно обойти эту проблему?