全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 R语言论坛
3755 4
2013-01-27
我写了一段Fortran 90程序,在GUN Fortran中运行了一下没有问题,但是R中无法加载。。。
code_debug.zip
大小:(203.99 KB)

 马上下载



问题已经自己解决了,谢谢关注!
在网上找了很多资料,我是这样做的。
首先,用记事本将下面的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就死了。。。




二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2013-1-27 11:50:41
我后来用Intel Fortran 测试了一段简单的程序发现R尽管显示没有载入,但是好像依然可以调用,但是我的程序还是无法载入,谁能帮忙看一下为啥吗??谢谢了
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2013-1-28 18:51:04
谷歌搜索之--
关于R调用Fortran生成dll函数的幽默
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2014-1-12 11:36:15
这是个pdf文档吗?找不到啊
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2014-9-12 10:42:38
楼主知道怎么看R中.Fortran的具体程序吗
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2015-1-9 13:00:36
终于看到有人用fortran了,哈哈;R么用过,应该和C或C++ 或MATLAB等调用方法一样吧,做成动态库或静态库就行了(动态库有会生成两个文件.lib(类似头文件,和静态库的.lib不一样) 和.dll),设置好编译器的选项就能掉了(注意:fortran的加接口,函数都是大写来说)
以上是基于windows平台,linux应该类似
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群