我是R包开发的新手。我正在开发一个包(bartpkg),它在src/
文件夹中有一个(主要)cpp文件和一些帮助程序cpp(X.Cpp
,Y.Cpp
)和一个c文件({{1} })及其标题文件(Z.C
,X.h
和Y.h
)
当我这样做时,我收到以下错误' Build&刷新'在Rstudio。
Z.h
我已遵循基本指南来构建软件包。
.R文件在正确的位置有指令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.
。
此外,prime cpp文件在正确的位置有以下标记。
#' @useDynLib bartpkg
我的#include <Rcpp.h>
using namespace Rcpp;
//' @param x A single integer.
//' @export
// [[Rcpp::export]]
文件正确显示NAMESPACE
。
我能够在useDynLib(bartpkg)
目录中看到bartpkg.so
共享对象文件。
我在终端中尝试了这个命令src/
,并且能够看到错误中的符号
未找到符号:__ ZN3RNG4nfixElm&#39;来自.C文件RNG.C,是因为函数&#39; nfix&#39;。
但即使我删除了功能&#39; nfix&#39;或者完全删除c++filt -n _ZN3RNG4nfixElm
文件,同样的错误:
未找到符号:__ ZN3RNG4nfixElm
这可能是一个标志问题,我的编译器无法编译&#39; C&#39;文件? 我能够看到所有cpp文件生成相应的目标文件,但我没有看到类似C文件的内容。
我在RNG.C
目录中有Makevars
只有一行
src/
我基本上只是从另一个包中复制了,更多的是因为我对Rcpp的理解以及使用哪些标志的确非常少。
我正在使用RStudio会话信息是
PKG_LIBS = `$(R_HOME)/bin/Rscript -e "Rcpp:::LdFlags()"`
我已经坚持这个问题好几个星期了。试着阅读&#39;写R扩展&#39;页面,但无法弄清楚这一点。 任何帮助都将受到高度赞赏。
谢谢。