如何避免出现在R CMD check中的新R开发版本(R正在开发(不稳定) (2017-02-15 r72179))中的注意事项?
• 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.例如,在赫米斯克中
发布于 2017-02-20 08:28:02
这个信息有点神秘。我还查看了其他包,发现名称空间文件中的useDynLib(packagename)被useDynLib(packagename, .registration = TRUE)所取代。
此外,我还在.c目录中添加了一个名为registerDynamicSymbol的src/文件,代码如下:
// 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的这个建议。规范引用在写R扩展中
此外,R发展邮件列表还提供了补充信息。
更新
最直接的办法是:
tools::package_native_routine_registration_skeleton(".")并将全部输出复制并粘贴到要放入src/的packagename_init.c文件中NAMESPACE,验证useDynLib(packagename, .registration = TRUE)exportPattern替换为export( list of object to be exported )更新7月18日
正如@Symbolix使用最新版本的R和RStudio的devtools所指出的,点2. (init.c文件)由devtools (使用RStudio校验位数)或工具包处理。
发布于 2017-10-14 03:07:01
我在Windows构建包中遇到了一个持久的问题。(.dll而不是.so)
上面接受的答案也应该解决Windows的这个问题,但是如果它不能解决这个问题。确保objdump.exe是指向适当的拱。即.../Mingw_64/bin/objdump.exe.可以使用which objdump.exe从命令提示符中检查这一点。不知怎么的,一个32位的objdump.exe在我的路径中找到了一个更高优先级的位置。这种拱形失配将产生File format not recognized错误。
发布于 2021-08-12 01:06:30
首先,我完全按照乔治·斯皮迪加托说的做了。但还是收到了警告。最后,我通过这样做解决了问题:
Sys.setenv(PATH =Sys.getenv(“PATH”),“C:\RTools40 40”,"C:\RTools40\mingw64\bin",sep =“;”)
必须将mingw64 64\bin添加到PATH中,因为这是objdump.exe所在的位置
https://stackoverflow.com/questions/42313373
复制相似问题