dyn.load(dllfile) 中的错误:无法加载共享对象 | 预期在:平面命名空间

Use*_*now 5 r shared-objects rcpp r-package

我是 R 包开发的新手。我正在开发一个包 (bartpkg),它的src/文件夹中有一个 (prime) cpp 文件和一些辅助 cpp ( X.Cpp, Y.Cpp) 和一个 c 文件 ( Z.C) 及其头文件 ( X.h, Y.hand Z.h)

在 Rstudio 中执行“构建和重新加载”时出现以下错误。

Error in dyn.load(dllfile) :
  unable to load shared object '/Users/abcd/BART/bart_pkg1/src/bartpkg.so':
  dlopen(/Users/abcd/BART/bart_pkg1/src/bartpkg.so, 6): Symbol not found: __ZN3RNG4nfixElm
  Referenced from: /Users/abcd/BART/bart_pkg1/src/bartpkg.so
  Expected in: flat namespace
 in /Users/abcd/BART/bart_pkg1/src/bartpkg.so
Calls: suppressPackageStartupMessages ... <Anonymous> -> load_all -> load_dll -> library.dynam2 -> dyn.load
Execution halted

Exited with status 1.
Run Code Online (Sandbox Code Playgroud)

我遵循了基本准则来构建包。

.R 文件#' @useDynLib bartpkg在正确的位置有指令。

此外,主要的 cpp 文件在正确的位置具有以下标签。

#include <Rcpp.h>
using namespace Rcpp;
//' @param x A single integer.
//' @export
// [[Rcpp::export]]
Run Code Online (Sandbox Code Playgroud)

我的NAMESPACE文件显示useDynLib(bartpkg)正确。

我能够bartpkg.sosrc/目录中看到共享对象文件。

我在终端中尝试了这个命令,c++filt -n _ZN3RNG4nfixElm并且能够看到错误中的符号

未找到符号:__ZN3RNG4nfixElm' 来自 .C 文件 RNG.C 并且是因为函数 'nfix'。

但即使我删除了函数 'nfix' 或RNG.C完全删除了文件,同样的错误:

未找到符号:__ZN3RNG4nfixElm

我的编译器无法编译“C”文件会是一个标志问题吗?我能够看到所有 cpp 文件都生成了各自的目标文件,但我没有看到 C 文件的任何类似内容。

Makevarssrc/目录中有一个只有一行

PKG_LIBS = `$(R_HOME)/bin/Rscript -e "Rcpp:::LdFlags()"`
Run Code Online (Sandbox Code Playgroud)

我基本上只是从另一个包中复制了它,更多是因为我对 Rcpp 的理解以及要使用的标志真的更少。

我正在使用 RStudio 是会话信息是

> sessionInfo()

R version 3.3.1 (2016-06-21)
Platform: x86_64-apple-darwin13.4.0 (64-bit)
Running under: OS X 10.11.6 (El Capitan)

locale:
[1] en_US.UTF-8/en_US.UTF-8/en_US.UTF-8/C/en_US.UTF-8/en_US.UTF-8

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base    

other attached packages:
[1] bartpkg_0.1.0        packrat_0.4.8-1      Rcpp_0.12.8          msm_1.6.4            LaplacesDemon_16.0.1

loaded via a namespace (and not attached):
 [1] roxygen2_5.0.1  lattice_0.20-34 mvtnorm_1.0-5   digest_0.6.10   grid_3.3.1      magrittr_1.5  
 [7] stringi_1.1.2   Matrix_1.2-7.1  splines_3.3.1   tools_3.3.1     stringr_1.1.0   survival_2.39-5
[13] parallel_3.3.1  rsconnect_0.5   inline_0.3.14   expm_0.999-0
Run Code Online (Sandbox Code Playgroud)

我被这个问题困了好几个星期了。试图阅读“编写 R 扩展”页面,但无法弄清楚。任何帮助将不胜感激。

谢谢你。