devtools导致RcppArmadillo包出现问题
最近几天我用了很多RcppArmadillo。我一直在做一个3D阵列卷积项目。在最初的陡峭学习曲线之后,我设法用ARMADILO创建了一些有用的C++例程。德克的荣誉 然后突然,卡帕玛迪洛开始做一些奇怪的事情;我一直收到这样的信息:devtools导致RcppArmadillo包出现问题,r,rcpp,devtools,R,Rcpp,Devtools,最近几天我用了很多RcppArmadillo。我一直在做一个3D阵列卷积项目。在最初的陡峭学习曲线之后,我设法用ARMADILO创建了一些有用的C++例程。德克的荣誉 然后突然,卡帕玛迪洛开始做一些奇怪的事情;我一直收到这样的信息: Found no calls to: 'R_registerRoutines', 'R_useDynamicSymbols' It is good practice to register native routines and to disable symb
Found no calls to: 'R_registerRoutines', 'R_useDynamicSymbols'
It is good practice to register native routines and to disable symbol
search.
这在Windows10中发生。在Linux中,您可能会收到相同的消息,但可以使用RcppArmadillo::RcppArmadillo.package.skeleton()
或按照编写R扩展-5.4注册本机例程中的新说明快速修复。但在Windows中,这将不起作用。为什么?
为了隔离问题,我从一个带有新R(3.4.1)的虚拟机(VM)开始。当您开始使用RcppArmadillo构建的演示时,它将构建没有停顿、没有注释、没有警告消息的演示。安装devtools
后,RcppArmadillo的问题就开始了
要重现这种情况,您可以执行以下操作:(1)
从一个新的R开始,安装运行所需的软件包,仅用于使用RcppArmadillo(一对)构建软件包<代码>(2)
构建演示包。你不会出错<代码>(3)下载我测试过的任何软件包的源代码:gckrig、GAS、abcrf、AbsFilterGSEA、Amelia、MAVE、sparsefactorananalysis、RcppProgress、artfima、geospt。他们都使用RcppArmadillo。如果您向他们提供依赖项,他们应该构建OK<代码>(4)现在,安装devtools
。您将立即开始接收信息:
Found no calls to: 'R_registerRoutines', 'R_useDynamicSymbols'
It is good practice to register native routines and to disable symbol
search
不管我做了什么,我都摆脱不了那张纸条。我在Linux中尝试了相同的软件包,没有任何问题。这会导致延迟,因为无法向CRAN提交包含该消息的包
(5)
现在,如果您卸载devtools
和依赖项,然后再次尝试构建任何RcppArmadillo包;不再显示消息注册本机例程。漂亮
我想知道为什么devtools
会导致这种冲突。我们怎样才能把它修好?我喜欢devtools
,但如果我必须使用RcppArmadillo,就必须将其卸载。艰难的选择
编辑
这是完全可复制的。以下是重现该行为的步骤:
(1)
从一个新的R开始,安装使用RcppArmadillo(一对)构建软件包所需的软件包。不要安装devtools
(2)
构建演示包。您将不会收到注册本机例程错误
(3) 下载我测试过的任何软件包的源代码:gckrig
,GAS
,abcrf
,absfiltersea
,Amelia
,MAVE
,sparsefactorananalysis
,RcppProgress
,artfima
,geospt
。他们都使用RcppArmadillo。如果您向他们提供依赖项,他们应该构建OK
(4) 现在,安装devtools
。请尝试使用上面的任何包重新构建。您将立即开始接收消息:注册本机例程
(5) 现在,如果卸载devtools
和依赖项,并尝试重新构建任何RcppArmadillo包;不再有与注册本机例程相关的消息
编辑这已经在三个安装R3.4.1的Windows10虚拟机实例上进行了测试,从零开始安装Rtools。在所有测试中,使用RcppArmadillo构建包时会显示消息register native routines。如果您尝试在Linux中构建—相同的软件包—它将无需注释即可通过。这里没有可复制的内容,许多其他人使用devtools。您可能只是指向另一个旧的R版本。不。我用R3.4.1新安装测试了3个不同的虚拟机。否则我就不会发表了。你试过了吗?我没有使用
devtools
,因为我(个人)觉得它很模糊。我使用R的时间比它存在的时间长得多,我有自己的助手(脚本),但主要依赖R Core记录和推荐的命令。如果您有devtools问题,您知道在哪里投诉。RcppArmadillo本身是好的——直到你提供了一个可复制的例子。R3.4.*最近有变化,需要注册,以及R和Rcpp所做的变化。我几乎可以肯定你在这件事上被绊倒了——我也刚刚上传了一个到CRAN的补丁,你可以在RcppArmadillo的git repo中找到。当然,这些都与devtools没有任何关系,所以您的报告可能是关于这一点的,但只是混淆了。我还是说不出来,因为没有可复制的东西。我看到了CRAN团队的便条。他们在Linux中也没有看到问题,只是在Windows中。我发布这篇文章是为了让人们知道这个问题可以被复制并追踪到它的源头。没有devtools
,我可以生存。我不认为这是RcppArmadillo的问题,否则包将无法构建。是的。只要再加点盐,炖菜就会烂掉。