Rcpp Rcpp.package.skeleton(" mypackage")" rcpp_hello_world"不适用于.Call()for package" mypackage"

时间:2014-03-23 17:19:08

标签: r rcpp

我在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在那里。

我可以做些进一步的检查,看看发生了什么吗?有什么想法吗?

3 个答案:

答案 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")