我写了一段Fortran 90程序,在GUN Fortran中运行了一下没有问题,但是R中无法加载。。。
问题已经自己解决了,谢谢关注!
在网上找了很多资料,我是这样做的。
首先,用记事本将下面的subrountine程序保存成alg1.f90文件
subroutine alg1(IC_result,k,p,a,w)
implicit none
integer,intent(in)::k
integer I,J,m1,m2,n,q,IC1,IC2,IC3,IC,z,sum1,sum2,col
integer,intent(out)::IC_result(:,:)
integer,intent(in)::p(:,:)
allocatable IC_result
integer,intent(in)::a(2**k,k)
integer temp(2**k,k)
real,intent(in)::w(2**k,k)
allocate(IC_result(ubound(p,1),1))
...
endsubroutine alg1
然后,在Win7 开始 命令行中运行R CMD SHLIB alg1.f90,
有警告如下:
cygwin warning: MS-DOS style path deteched:...
Preferred POSIX equivalent is:...
但好像都是有关路径的问题,文件夹中已经生成了alg1.dll文件。
之后测试是否能够加载:
setwd("D:\\code_debug")
dyn.load("alg1.dll")
> is.loaded("alg1.dll")
[1] FALSE
加载失败了。。。
但是当我用R调用的时候就会死掉。。
setwd("D:\\code_debug")
dyn.load("alg1.dll")
P<-read.table("P.dat")
W<-read.table("W.txt")
A<-read.table("A.dat")
res<-matrix(0,48,1)
ret <- .Fortran("alg1", IC_result=as.matrix(res),k=3,p=as.matrix(P),a=as.matrix(A),w=as.matrix(W))
到这里R就死了。。。