Error: missing "PACKAGE" argument in RcppExport.R?

Error: missing "PACKAGE" argument in RcppExport.R?

我重建了我正在开发的包(而且我已经一个月没有更新了),我发现我所有的测试都失败了,错误是:

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

然后我发现 RcppExports.R 文件中的所有函数都缺少参数 PACKAGE = myPackage,请参阅 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); 
}

后一个文件还需要吗?

是的,"everything changed" 因为 R 3.4.0 造就了我们,并且我们符合。

第二部分绝对没问题 -- 这就是应该的样子。

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

中有正确的注册信息

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

另请注意,我们有两个极端情况需要修复,因此如果您需要,可以使用临时版本(参见 rcpp-devel 发布)——但是 我觉得你不会。