无法在Windows Server 2008中加载Rcpp包

时间:2014-05-28 16:31:14

标签: windows r git rcpp

我一直在尝试在Windows Server 2008 R2平台上加载最新版本的Rcpp软件包(GIT版本XXXX)。当我这样做时,我收到以下错误:

> library(Rcpp)
Error : .onLoad failed in load Namespace() for 'Rcpp', details:
  call: new_dummyObject(.dummyInstancePointer)
  error: object 'class__dummyInstance' not found
In addition: Warning message:
package 'Rcpp' was built under R version 3.0.3
Error: package or namespace load failed for 'Rcpp'

我已经与GitHub的一位软件包作者讨论了这个问题,我们已经确定它很可能是本地问题。 (经过更仔细的调查后说,该帖子中的问题与我得到的问题并不完全相同)我能够使用R版本3.0.1和3.0.3使用Windows Server 2003加载相同的软件包。为方便起见,我在这里处理链接帖子的部分内容。我生成包的过程如下:

  1. 从Github下载最新的主代码(应该是提交5b510ed)
  2. 解压缩临时目录中的zip文件,并将“Rcpp-master”重命名为“Rcpp”
  3. 已安装的Rtools版本3.1
  4. 确保RTools bin和相关的gcc bin目录位于我的路径的开头
  5. 使用命令“R CMD BUILD Rcpp”生成Rcpp_0.11.1.2.tar.gz文件
  6. 使用命令“R CMD INSTALL --build --compile-both Rcpp_0.11.1.2.tar.gz生成Rcpp_0.11.1.2.zip
  7. 将生成的zip存档复制到Windows Server 2008计算机
  8. 使用R本机安装本地程序包安装Rcpp程序包
  9. 根据包的作者建议,我查看了工作和不工作R版本上的.libPaths()输出。在这两种情况下,输出完全相同:

    [1] "\\\\vnxserver/home/MYACCT/My Documents/R/win-library/3.0"
    [2] "C:/Program Files/R/R-3.0.2/library"
    

    我真的不知道在调试链中接下来要尝试什么,我希望一些SO社区可以指出我正确的方向。 (这就是我在这里重新发布的原因)。欢迎任何评论。

    虽然我在前面的段落中发布过,但可能不清楚GitHub的相关讨论是在https://github.com/RcppCore/Rcpp/issues/147

1 个答案:

答案 0 :(得分:3)

在正确调试问题之后,从长远来看,问题出在Windows上。我们的安全管理员已设置系统的权限,以便无法从特定目录加载DLL文件。在与我们的IT人员合作之后,我能够获得使用放置在特殊位置的dll文件的R包,然后使用.libPaths()函数将该特殊位置添加到库搜索路径中。为了使最终用户更容易,我将相应的代码放在系统范围的RProfile.site文件中,以处理这个额外的库搜索目录问题。

问题解决了......

顺便说一句,我认为R应该已经通知当它试图打开图书馆并且没有任何相关符号时会发生一些奇怪的事情......至少是警告...

我编辑了这个答案,从我的Rprofile.site文件中获取相关的snipplet,以便将目录添加到库搜索路径中。该文件放在c:/program files/R/R-3.0.2/etc

.First = function() {
  cat('Adding LocalLibrary to the Library Search Path ... ')
  .libPaths(c(.libPaths(), <your library path you want to add>))

  if(<your path you want to add> %in% .libPaths()) {
    cat('Success\n')
  } else {
    cat('Failure\n')
    cat('You may encounter problems using libraries that depend on dynamically loaded dll files\n')
  }
}