R CMD 检查注释 : Found no calls to: ‘R_registerRoutines’ , ‘R_useDynamicSymbols’

标签 r compilation devtools

如何避免使用新的 R 开发版本(R 正在开发(不稳定)(2017-02-15 r72179))在 R CMD check 中出现以下注释?

• checking for unstated dependencies in examples ... OK
• checking line endings in C/C++/Fortran sources/headers ... OK
• checking compiled code ... NOTE
File ‘pkgname/libs/pkgname.so’:
  Found no calls to: ‘R_registerRoutines’, ‘R_useDynamicSymbols’

It is good practice to register native routines and to disable symbol
search.

例如 Hmisc

最佳答案

这条消息有点神秘。我还查看了其他包,发现 NAMESPACE 文件中的 useDynLib(packagename)useDynLib(packagename, .registration = TRUE) 替换。

此外,我在 src/ 目录中添加了一个名为 registerDynamicSymbol.c 文件,代码如下:

// RegisteringDynamic Symbols

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

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

我从GitHub Rcpp接受了这个建议。规范引用位于 Writing R Extensions

还有R Devel Mailinglist提供了补充信息。

更新

最直接直接的方法是:

  1. 使用当前的 R 开发版本(最终将成为 3.4)
  2. 运行 tools::package_native_routine_registration_sculpture(".") 并将完整输出复制并粘贴到要放入 src/的 packagename_init.c 文件中
  3. 更新 NAMESPACE,验证 useDynLib(packagename, .registration = TRUE)
  4. 如有必要,请将 exportPattern 替换为 export( 要导出的对象列表)

7 月 18 日更新

正如 @Symbolix 使用最新版本的 R 和 RStudio 开发工具所指出的,第 2 点(init.c 文件)似乎由开发工具(使用 RStudio 校验位)或工具包处理。

关于R CMD 检查注释 : Found no calls to: ‘R_registerRoutines’ , ‘R_useDynamicSymbols’,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42313373/

相关文章:

r - 使用线性模型对单变量季节性时间序列进行插补

r - 如何将新函数插入到我的 R 包中?

r - 主成分分析教程-R代码转Matlab问题

c - 为什么static和register存储类不能一起使用呢?

c++ - 为什么同一个头文件要包含两次?

google-chrome-devtools - "Start profiling and reload page"什么时候决定停止自动录制?

r - 从位于文件系统目录中的本地 git 存储库安装

r - 将表达式与变量r一起使用

angularjs - Angular $compile 不工作

flutter - 带有 Flutter 的 DevTools 中的大绿色右箭头 (-->) 是什么意思?