Rcpp Rcpp.package.skeleton(“mypackage”) “rcpp_hello_world” not available for .Call() for package “mypackage”

做~自己de王妃 提交于 2019-12-03 10:12:44

FWIW, I just got a similar error while retrofitting an existing R-only package with Rcpp, and the problem was a missing useDynLib(mypackage) in NAMESPACE.

The package is tested extensively before every release, including on the Windows-using Win-builder. The regression tests even include building a package this way via a call to package.skeleton().

It is also rebuilt by CRAN post-release. Many people use it.

For all of those people, tests are appropriate and when long long cannot be used, it is #define-d away.

Now, you insist on building in a non-standard way: no source I know of recommends calling R CMD INSTALL via system(). I suspect you simply have a $PATH mishap and find another wrong g++ version.

I would suggest to do what the documentation suggests and run

  R CMD INSTALL mypackage*tar.gz

in a cmd.exe prompt.

If the package NAMESPACE file contains the line useDynLib(mypackage, .registration = TRUE) (perhaps via a roxygen line #' @useDynLib, .registration = TRUE), then it is necessary to remove PACKAGE = "mypackage" from .C / .Call function calls:

i.e. .Call( "rcpp_hello_world", PACKAGE = "mypackage") becomes .Call("rccp_hello_world").

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!