我在R提示符下通过以下命令设法让Rcpp.package.skeleton
在Windows中安装 -
Rcpp.package.skeleton("mypackage")
system("R CMD build mypackage")
system("R CMD INSTALL mypackage")
library(mypackage)
这会创建mypackage.dll
。但是当我执行以下命令时 -
rcpp_hello_world <- function(){ .Call( "rcpp_hello_world", PACKAGE = "mypackage")}
rcpp_hello_world()
我收到以下错误:
Error in .Call("rcpp_hello_world", PACKAGE = "mypackage") :
"rcpp_hello_world" not available for .Call() for package "mypackage"
我运行sessionInfo()
并获得以下内容:
attached base packages:
[1] tools stats graphics grDevices utils datasets methods base
other attached packages:
[1] mypackage_1.0 inline_0.3.13 Rcpp_0.11.1
声明我的新mypackage在那里。
我可以做些进一步的检查,看看发生了什么吗?有什么想法吗?
答案 0 :(得分:30)
FWIW,我在使用Rcpp改造现有的R-only软件包时遇到了类似的错误,问题是useDynLib(mypackage)
中缺少NAMESPACE
。
答案 1 :(得分:3)
在每次发布之前对包进行广泛测试,包括在使用Windows的Win-builder上。回归测试甚至包括通过调用package.skeleton()
以这种方式构建包。
它也是由CRAN发布后重建的。很多人都使用它。
对于所有这些人,测试是合适的,当long long
无法使用时,它会#define
- d远离。
现在,您坚持以非标准方式构建:我知道没有任何来源建议通过R CMD INSTALL
呼叫system()
。我怀疑你只是发生了$PATH
事故并发现了另一个错误的g++
版本。
我建议做文档建议并运行
R CMD INSTALL mypackage*tar.gz
在cmd.exe
提示符中。
答案 2 :(得分:0)
当我遇到此问题时,解决方案是从对C [/ cpp]函数的调用中删除PACKAGE = "mypackage"
即。
.Call( "rcpp_hello_world", PACKAGE = "mypackage")
变为.Call("rccp_hello_world")