Ну, я недавно влюбился в Fortran
(f90
) и пытался понять "кунг-фу" из R
и Fortran
.Я нашел несколько уместных и полезных вопросов здесь (например, это и это ).
Что я пытаюсь сделать:
Я (возможно, пытаюсь сделать что-то сумасшедшее) пытаюсь вызвать следующие .f90
подпрограммы в R
(x64), используя функцию .Fortran()
.Вот код test.f90
:
! Computes the square of a number
Subroutine sr1(a,b)
!DEC$ ATTRIBUTES DLLEXPORT::sr1
!DEC$ ATTRIBUTES C, REFERENCE, ALIAS:'sr1' :: sr1
implicit none
integer a,b
b = a*a
End Subroutine sr1
! Computes the cube of a number
Subroutine sr2(x,y)
!DEC$ ATTRIBUTES DLLEXPORT::sr2
!DEC$ ATTRIBUTES C, REFERENCE, ALIAS:'sr2' :: sr2
implicit none
integer x,y
y = x*x*x
End Subroutine sr2
Я компилирую вышеуказанный код test.f90
с помощью gfortran
на моем компьютере с Windows 10:
gfortran -shared -o test.dll test.f90
Компиляция работает иЯ получаю test.dll
.Сейчас в R
.Я пытаюсь загрузить его:
dyn.load("path_to_file/test.dll")
Работает.Но, это терпит неудачу здесь:
> is.loaded("test")
[1] False
Я уже нашел соответствующий вопрос здесь .Но я не мог получить ключ к решению моей проблемы.Может кто-нибудь предложить какой-нибудь обходной путь, чтобы решить проблему?