C++ 如何向Rcpp注册本机例程?

C++ 如何向Rcpp注册本机例程?,c++,r,rcpp,C++,R,Rcpp,我正在写一个生物导体包。为了做到这一点,它需要通过 < >我使用RCPP和RStudio使C++代码可用R使用标签 /[[RCPP::Ext] ] < /C>和RCPP类,而不是ESPP类。 Rstudio自动生成Rcpp_export.cpp和Rcpp_export.R,运行良好 然而,BiocCheck对此表示不满: 正在检查本机例行程序注册 注册本机例程!看见 那么,有人知道如何解决这个问题吗?对于任何感兴趣的人,这里是我从Bioconductor-devel邮件列表中得到的答案: “注

我正在写一个生物导体包。为了做到这一点,它需要通过

< >我使用RCPP和RStudio使C++代码可用R使用标签<代码> /[[RCPP::Ext] ] < /C>和RCPP类,而不是ESPP类。 Rstudio自动生成Rcpp_export.cpp和Rcpp_export.R,运行良好

然而,BiocCheck对此表示不满:

正在检查本机例行程序注册

注册本机例程!看见


那么,有人知道如何解决这个问题吗?

对于任何感兴趣的人,这里是我从Bioconductor-devel邮件列表中得到的答案:


“注册本机例程是一种最佳实践,但使用Rcpp并不需要,也不难(我认为)完成。我不会在这方面花费更多的精力。”

我最终成功地使用Rcpp注册了本机例程,并通过了BiocCheck。我使用的是Rcpp 0.12.9、BiocCheck 1.9.3和Kmisc 0.5.1

1) 在由Rcpp自动生成的文件“RcppExports.cpp”中,在每个函数之前的以下位置添加“//[[register]]”:

// my_function
returntype my_function(...);
// [[register]]
RcppExport SEXP packagename_my_function(...) {
BEGIN_RCPP
...
END_RCPP
}
2) 然后,从R开始,运行

Kmisc::registerFunctions(prefix="")
这将创建一个文件“packagename_init.c”

3) 确保你有

useDynLib(packagename, .registration=TRUE)
在名称空间文件中。它在没有.registration=TRUE的情况下对我也有效。 这应足以通过检查。您可以使用检查注册的例程

getDLLRegisteredRoutines("packagename")
询问Bioconductor邮件列表(关于Bioconductor软件包开发问题的适当位置),您可能会被告知接受建议。最简单的方法是:
在您的
命名空间中使用dynlib(,)