我通过使用Rcpp在R中包装了一个小型c ++程序,并且事先检查了c ++代码是直接用g ++ 4.8.4编译的,没有警告或错误。没有外部库,仅使用STL。
当我使用devtools在RStudio中编译我的包时,出现以下错误:
Updating PerseusR documentation
Loading PerseusR
Error in dyn.load(dllfile) :
unable to load shared object '/home/leonid/Documents/Programmation/PerseusR project/PerseusR/src/PerseusR.so':
/home/leonid/Documents/Programmation/PerseusR project/PerseusR/src/PerseusR.so: undefined symbol: _Z9lexicoPoslllRSt6vectorIlSaIlEE
Calls: suppressPackageStartupMessages ... -> load_all -> load_dll -> library.dynam2 -> dyn.load
Execution halted
Exited with status 1.
看起来编译很好,并且某些动态库的加载存在问题。
在未定义符号中,lexicoPos是c ++代码中函数的名称。
关于如何解决此问题的任何想法?
最佳答案
如果您尝试的本地尝试失败,建议您从创建的示例开始:调用Rcpp.package.skeleton()
并将其创建的所有文件与您拥有的文件进行比较。
也许您忘记了NAMESPACE
中的必需行,也许是这样-我们无法从您提供的信息中分辨出来。
关于c++ - 包编译动态库加载错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32038452/