R 3.1.2 dyn.load()错误 - %1不是有效的Win32应用程序

问题描述:

我试图将一系列Fortran文件合并到R中供我进行研究(文件位于http://tyrosine.usc.edu/closure)。使用MinGW32的GNU Fortran编译器(4.8.1-4)将这些文件编译为.dll格式。我通过RStudio(0.98.1028)运行32位Windows 7和32位R(3.1.2)。R 3.1.2 dyn.load()错误 - %1不是有效的Win32应用程序

由于R,Windows和WinGW32是32位,这不应该是一个标准的64位VS 32位的问题,因为此处建议:

Not a valid Win32 application

和这里:

Using the rJava package on Win7 64 bit with R

错误是:

dyn.load(“close1.d “) 错误inDL(x,as.logical(local),as.logical(now),...): 无法加载共享对象'C:/Users/Morgan/Desktop/close1.dll': LoadLibrary失败:%1不是有效的Win32应用程序。 nd。

难道是因为它们之间存在依赖关系,文件需要首先转换为包吗?

编辑:为了说明起见,我是将文件编译成.dll文件。这些文件是压缩的.tgz文件。

我最近遇到类似问题,发现在download.file中操作方法和模式选项解决了这个问题。

download.file("http://tyrosine.usc.edu/closure/close1.dll", 
      paste(c(getwd(),"/close1.dll"), collapse=""), 
      method="internal",mode="ab") 

dyn.load("close1.dll") 

另外,请检查下载的文件与Dependency Walker。这表明,对于不同的模式参数,R在下载过程中将文件更改为非32位或64位应用程序。对我来说mode =“ab”是唯一有效的参数。

最佳,

杰森

+0

不幸的是,这些文件无法直接下载和加载 - 它们需要首先编译为.dll文件。查看问题**编辑**。 – Morgan

+0

模式''wb''比'ab''更有意义,并且是相同的。 –

.dll文件装载成R环境中使用dyn.load()命令时,我得到了相同的。 Sol: 我已经采用了.dll文件的完整路径,并且路径中包含空格(\ s)字符,这就是显示错误的原因。删除空格后,命令成功执行。 enter image description here

+1

编辑您的答案并使其更具可读性 – urfusion