我重建了我正在开发的软件包(并且我自一个月以来一直没有更新),我发现我的所有测试都因错误而失败:
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)
(加上其他一些imports
和exports
)。
我还必须最近添加一个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);
}
还需要后一个文件吗?
答案 0 :(得分:2)
是的,&#34;一切都改变了#34;因为R 3.4.0制造了我们,我们遵守。
第二部分肯定是好的 - 这就是应该是这样的。
请检查一下
- 你有生成的src/RcppExports.cpp
- 您在NAMESPACE
过去几周已经更新了许多软件包,这通常有效。如果有疑问,可以通过创建一个快速的一次性包
Rcpp.package.skeleton()
并进行比较。
另请注意,我们有两个需要修复的角落案例,因此如果您需要,可以使用临时版本(参见rcpp-devel发布) - 但是 我不认为你这样做。