包编译动态库加载错误
Package compilation dynamic library loading error
我正在使用 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
中忘记了所需的行,也许它是什么 -- 我们无法从您提供的信息中判断出来。
我正在使用 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
中忘记了所需的行,也许它是什么 -- 我们无法从您提供的信息中判断出来。