c++ - 包编译动态库加载错误

标签 c++ r rcpp

我正在使用 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.

貌似编译没问题,就是部分动态库加载有问题。 undefined symbol中,lexicoPos是c++代码中的函数名。

关于如何解决这个问题有什么想法吗?

最佳答案

如果您自己开发的尝试失败了,我建议您从一个创建的示例开始:调用 Rcpp.package.skeleton() 并将它创建的所有文件与您拥有的文件进行比较。

也许您忘记了 NAMESPACE 中需要的行,也许是什么原因——我们无法从您提供的信息中得知。

关于c++ - 包编译动态库加载错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32038452/

相关文章:

c++ - 从函数返回本地 CassStatement 指针

c++ - RcppArmadillo expmat 挂起 4x4 矩阵

r - 获得与上月底的差额

c++ - 加载 Rcpp 并运行示例代码

c++ - 使用 C++ 访问 Google 数据

c++ - C++ Windows 中的高分辨率计时器库?

c++ - 如何将控制台输出数据输入命令提示符?

r - 如何找到数字序列中连续数字的总数

r - 由RcppArmadillo.package.skeleton创建的NAMESPACE选项导致错误

c++ - 将 dnorm 和 pnorm 函数从 R 导入到 Rcpp