2016-01-14 18 views
0

我一直在使用RcppArmadillo構建一個包,但是我遇到了一個小問題。我有一個完美的32位R工作包,但我希望它能在64位上運行。當我開始研究這個軟件包時,我使用了32位R(沒有意識到這一點),但是當我轉向64位R時,我停止了構建我的軟件包。我收到錯誤消息:「LoadLibrary失敗:%1不是有效的Win32應用程序。」在64位Windows上使用RcppArmadillo的構建包

我意識到問題是.dll文件是32位,所以64位R無法使用它。我不明白的是如何重新創建.dll以使其成爲64位。在運行時,在64位R中,我得到TRUE,所以我懷疑我必須在makevars文件中添加一些內容才能使其工作。

所以我的問題在一句話是:你如何得到一個工作的32位軟件包與RcppArmadillo在Windows上使用64位?任何指導將不勝感激。

回答

0

啊哈,這是makevars文件。

我不得不添加$(shell "${R_HOME}/bin${R_ARCH_BIN}/Rscript.exe" -e "Rcpp:::LdFlags()")

+1

不,你不需要'Rcpp :: LdFlags()',除非你使用了一個兩歲的Rcpp。 –

+0

謝謝你的幫助德克。我可以通過在'R CMD INSTALL'中加入'--force-biarch'來建立沒有'Rcpp :: LdFlags()'的軟件包 – Carl

2

所有 CRAN包材在32位和64位Windows。

全部 CRAN提交,包括我不同的Rcpp *軟件包(除那些需要Unix或C++ 11或...)。所以如果我是你,並且(臨時)麻煩設置我的主箱子,我仍然會使用優秀的win-builder,它會爲你生成32位和64位二進制文​​件。