提问人:f0nzie 提问时间:8/19/2017 最后编辑:f0nzie 更新时间:8/21/2017 访问量:326
devtools 导致 RcppArmadillo 包出现问题
devtools causes problems in RcppArmadillo packages
问:
在过去的几天里,我一直在使用很多 RcppArmadillo。我一直在做一个 3D 数组卷积项目。在最初的陡峭学习曲线之后,我设法使用Armadillo创建了一些有用的C++例程。向德克致敬。
然后突然间,RcppArmadillo开始做一些奇怪的事情;我一直收到这条消息:
Found no calls to: 'R_registerRoutines', 'R_useDynamicSymbols'
It is good practice to register native routines and to disable symbol
search.
这发生在 Windows 10 中。在 Linux 中,您可能会收到相同的消息,但可以使用或遵循 中的新说明快速修复。但是,在 Windows 中,这是行不通的。为什么?RcppArmadillo::RcppArmadillo.package.skeleton()
Writing R Extensions - 5.4 Registering native routines
为了隔离问题,我从带有全新 R (3.4.1) 的虚拟机 (VM) 开始。当您开始使用 RcppArmadillo 构建的演示时,它将构建演示而不会打嗝、没有注释、没有警告消息。安装后,RcppArmadillo的问题就开始了。devtools
要重现这一点,您可以执行以下操作:从新的 R 开始,并安装仅使用 RcppArmadillo(一对夫妇)构建包所需的运行包。 构建演示包。您不会收到任何错误。 下载我测试过的这些软件包中的任何一个的源代码:gckrig、GAS、abcrf、AbsFilterGSEA、Amelia、MAVE、SparseFactorAnalysis、RcppProgress、artfima、geospt。他们都使用 RcppArmadillo。他们应该可以构建,前提是你用他们的依赖项喂养他们。 现在,安装 .在您开始收到消息后:(1)
(2)
(3)
(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)
现在,如果您卸载和依赖项并再次尝试构建任何 RcppArmadillo 包;不再有消息寄存器本机例程。美丽。devtools
我想知道为什么会引起这场冲突。我们怎样才能解决这个问题?我喜欢,但如果我必须使用 RcppArmadillo,则必须将其卸载。艰难的抉择。devtools
devtools
编辑
这是完全可重复的。以下是重现行为的步骤:
(1)
从新的 R 开始,并安装使用 RcppArmadillo(一对)构建包所需的包。请勿安装 .devtools
(2)
构建演示包。您将不会收到任何寄存器本机例程错误。
(3) 下载我测试过的这些软件包的源代码:、、、他们都使用 RcppArmadillo。他们应该可以构建,前提是你用他们的依赖项喂养他们。gckrig
GAS
abcrf
AbsFilterGSEA
Amelia
MAVE
SparseFactorAnalysis
RcppProgress
artfima
geospt
(4) 现在,安装 .尝试使用上述任何软件包再次构建。在开始接收消息后立即:注册本机例程。devtools
(5)现在,如果您卸载和依赖项并尝试再次构建任何RcppArmadillo包;不再有与注册本机例程相关的消息。devtools
编辑
这已经过测试,三个 Windows 10 虚拟机实例从头开始安装 R 3.4.1、Rtools。在所有测试中,使用 RcppArmadillo 构建包时,都会使用消息寄存器本机例程。如果您尝试在 Linux 中构建 - 相同的包 - 它将通过,没有注释。
答: 暂无答案
评论
devtools
devtools