devtools在RcppArmadillo包中引起问题

时间:2017-08-18 20:02:56

标签: r rcpp devtools

最近几天我一直在使用很多RcppArmadillo。我一直致力于3D阵列卷积项目。在最初的陡峭学习曲线之后,我设法使用Armadillo创建了一些有用的C ++例程。感谢Dirk。

然后突然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中,您可能会收到相同的消息,但可以使用RcppArmadillo::RcppArmadillo.package.skeleton()Writing R Extensions - 5.4 Registering native routines中的新说明快速修复此消息。但是在Windows中这将不起作用。为什么呢?

为了解决问题,我开始使用带有新R(3.4.1)的虚拟机(VM)。当您开始使用RcppArmadillo构建的演示时,它将构建演示而不会出现打嗝,没有注释,没有警告消息。一旦安装devtools,RcppArmadillo的问题就开始了。

要重现这一点,您可以执行以下操作:(1)从一个全新的R开始,并安装仅运行所需的软件包以使用RcppArmadillo(一对)构建 your-package (2)构建您的演示包。你不会得到任何错误。 (3)下载我测试的任何这些软件包的来源:gckrig,GAS,abcrf,AbsFilterGSEA,Amelia,MAVE,SparseFactorAnalysis,RcppProgress,artfima,geospt。他们都使用RcppArmadillo。他们应该建立好,只要你给他们提供依赖。 (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)下载我测试的任何这些软件包的来源:gckrigGASabcrfAbsFilterGSEAAmelia,{ {1}},MAVESparseFactorAnalysisRcppProgressartfima。他们都使用RcppArmadillo。他们应该建立好,只要你给他们提供依赖。

(4)现在,安装geospt。尝试使用上面的任何包重新构建。在您开始收到消息后立即:注册本机例程。

(5)现在,如果您卸载devtools和依赖项并再次尝试构建任何RcppArmadillo软件包;没有更多与注册本机例程相关的消息

修改
这已经过测试,有三个Windows 10虚拟机实例从头开始安装R 3.4.1,Rtools。在所有测试中,使用RcppArmadillo构建包,并显示消息注册本机例程。如果你尝试在Linux中构建 - 相同的包 - 它将通过没有注释。

0 个答案:

没有答案