2014-12-29 102 views
0

我試圖將一系列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文件。

回答

0

我最近遇到類似問題,發現在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''更有意義,並且是相同的。 –

0

.dll文件裝載成R環境中使用dyn.load()命令時,我得到了相同的。 Sol: 我已經採用了.dll文件的完整路徑,並且路徑中包含空格(\ s)字符,這就是顯示錯誤的原因。刪除空格後,命令成功執行。 enter image description here

+1

編輯您的答案並使其更具可讀性 – urfusion

相關問題