无法在R(R崩溃)中调用Fortran子例程

时间:2018-06-07 15:58:05

标签: r crash fortran

我有以下示例代码test.f90,,我试图在我的Windows 10(x64位)计算机上使用Lahay Fortran(x32位)进行编译。

! 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

有没有人知道解决问题的原因或解决方法是什么?

0 个答案:

没有答案