错误:缺少" PACKAGE" RcppExport.R中的参数?

时间:2017-06-24 18:34:54

标签: c++ r rcpp r-package

我重建了我正在开发的软件包(并且我自一个月以来一直没有更新),我发现我的所有测试都因错误而失败:

Error in myCPlusPlusFun(...  : 
object 'myPackage_myCPlusPlusFun' not found

然后我发现PACKAGE = myPackage文件中的所有函数都缺少参数RcppExports.R,请参阅git diff的输出:

 myCPlusPlusFun <- function(X) {
-    invisible(.Call('myPackage_myCPlusPlusFun', PACKAGE = 'myPackage', X))
+    invisible(.Call(myPackage_myCPlusPlusFun, X))

知道发生了什么?

我想我需要
invisible(.Call('myPackage_myCPlusPlusFun', PACKAGE = 'myPackage', X))
当我构建我的包(?)

时会自动生成

谢谢!

编辑:我现在在NAMESPACE文件中有以下几行:

exportPattern("^[[:alpha:]]+")
importFrom(Rcpp,evalCpp)
useDynLib(locus, .registration = TRUE)

(加上其他一些importsexports)。

我还必须最近添加一个C文件来注册动态符号,其中包含以下内容:

#include <R.h>
#include <Rinternals.h>
#include <R_ext/Rdynload.h>

void R_init_myPackage(DllInfo* info) {
  R_registerRoutines(info, NULL, NULL, NULL, NULL);
  R_useDynamicSymbols(info, TRUE); 
}

还需要后一个文件吗?

1 个答案:

答案 0 :(得分:2)

是的,&#34;一切都改变了#34;因为R 3.4.0制造了我们,我们遵守。

第二部分肯定是好的 - 这就是应该是这样的。

请检查一下 - 你有生成的src/RcppExports.cpp - 您在NAMESPACE

中拥有正确的注册信息

过去几周已经更新了许多软件包,这通常有效。如果有疑问,可以通过创建一个快速的一次性包 Rcpp.package.skeleton()并进行比较。

另请注意,我们有两个需要修复的角落案例,因此如果您需要,可以使用临时版本(参见rcpp-devel发布) - 但是 我不认为你这样做。