Невозможно вызвать подпрограмму Fortran в R (сбой R) - PullRequest
0 голосов
/ 07 июня 2018

У меня есть следующий пример кода 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

У кого-нибудь есть идеи, почему или как можно обойти эту проблему?

...