2012-03-06 91 views
0

我已經使用RcppArmadillo和內聯軟件包編寫函數,我使用的是Windows 7,安裝了R-2.14.1和Rtools215並檢查了路徑。創建使用RcppArmadillo的軟件包

funs = cxxfunction(list(MHcpp = signature(…), IWcpp = signature(…), c(code1,code2), 
plugin="RcppArmadillo") # No compline and I they work fine as expected. 

Package.skeleton(「new」,funs) # to create the package skeleton and the dynamic libray 
# to build the package I use 
R CMD INSTALL –build new # I get the following error 
C:/Users/samuel/Documents/R/win-library/2.14/Rcpp/lib/i386/libRcpp.a(Dimension.o 
):Dimension.cpp:(.text+0x342): undefined reference to `_Unwind_SjLj_Unregister' 
………………………………………………………….. 
……………………………………………………………. 
C:/Users/samuel/Documents/R/win-library/2.14/Rcpp/lib/i386/libRcpp.a(Environment 
.o):Environment.cpp:(.text$_ZN4Rcpp11no_such_envC1Ei[Rcpp::no_such_env::no_such_ 
env(int)]+0x3fc): undefined reference to `_Unwind_SjLj_Unregister' 
C:/Users/samuel/Documents/R/win-library/2.14/Rcpp/lib/i386/libRcpp.a(Environment 
.o):Environment.cpp:(.text$_ZN4Rcpp11no_such_envC1Ei[Rcpp::no_such_env::no_such_ 
env(int)]+0x644): undefined reference to `_Unwind_SjLj_Resume' 
collect2: ld returned 1 exit status 
ERROR: compilation failed for package 'new' 
* removing 'C:/Users/samuel/Documents/R/win-library/2.14/new' 

有關如何解決問題的任何建議。

回答

2

您需要使用Rcpp提供的package.skeleton變體,或者在本例中使用RcppArmadillo。也就是說,調用

RcppArmadillo.package.skeleton(...) 

不是一個從基R.

您也可以看看如何依賴於RcppArmadillo其他CRAN的包被組織和比較的差異。

+0

我嘗試使用RcppArmadillo.package.skeleton(「new」,funs),它創建包含MHcpp和IWcpp函數的目錄和new.cpp文件。然後我檢查是否可以安裝「新建」軟件包「Rcmd check new」,這是我得到的。 *檢查文件'new/DESCRIPTION'...好吧 *檢查軟件包名稱空間信息...好吧 *檢查軟件包依賴關係...好吧 *檢查這是否是源軟件包...好吧 *檢查if有一個名字空間...好吧 *檢查可執行文件...好吧 *檢查是否可以安裝軟件包'new'...錯誤 安裝失敗。 我錯過了什麼?謝謝 – 2012-03-07 04:21:23

+0

在rcpp-devel – 2012-03-07 04:24:43

+0

上發佈一個可重現的例子和所有錯誤謝謝Dirk,問題解決了。我使用Rtools213,刪除舊版本,然後安裝新的「Rtools215」解決了這個問題。感謝提供幫助。 RcppArmadillo是一款優秀的軟件包,它使我的代碼速度提高了70%以上。 – 2012-03-08 05:09:31