2012-03-06 78 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