小编And*_*lva的帖子

使用boost :: iostreams :: gzip_decompress时,rcpp代码无法加载boost库(在BH中实现)

我希望从.bz文件中读取数据.我正在尝试使用BH库使用rcpp plus boost.我在MacOSX 10.10.3,Rcpp版本0.11.6和BH 1.58.0-1上运行R 3.2.0.

这是我到目前为止的代码:

// [[Rcpp::depends(BH)]]

#include <Rcpp.h>
#include <iostream>
#include <fstream>
#include <boost/iostreams/device/file.hpp>
#include <boost/iostreams/filtering_stream.hpp>
#include <boost/iostreams/filter/gzip.hpp>
#include <boost/math/common_factor.hpp>

using namespace Rcpp;

// [[Rcpp::export]]
int read_file_cpp(std::string path) {
  std::ifstream file(path.c_str(), std::ios_base::in | std::ios_base::binary);
  boost::iostreams::filtering_istream in;
  in.push(boost::iostreams::gzip_decompressor());
  in.push(file);
  for(std::string str; std::getline(in, str); )
  {
    std::cout << "Processed line " << str << '\n';
  }
  file.close();
  return(0);
}
Run Code Online (Sandbox Code Playgroud)

当我尝试通过以下方式加载代码时:

Rcpp::sourceCpp(file = "src/boost_test.cpp")
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

dyn.load中的错误("/ var/folders/sv/rhmpnyt91kdb10d1hnz_zd1c0000gn/T // RtmpZiCsVD/sourcecpp_40e63686ad7f/sourceCpp_9777.so"):无法加载共享对象'/ var/folders/sv/rhmpnyt91kdb10d1hnz_zd1c0000gn/T // RtmpZiCsVD/sourcecpp_40e63686ad7f /sourceCpp_9777.so':执行dlopen(/var/folders/sv/rhmpnyt91kdb10d1hnz_zd1c0000gn/T//RtmpZiCsVD/sourcecpp_40e63686ad7f/sourceCpp_9777.so,6):符号未找到:/ VAR /文件夹/ SV/rhmpnyt91kdb10d1hnz_zd1c0000gn/T /:__ZN5boost9iostreams6detail11gzip_footer5resetEv从参考/RtmpZiCsVD/sourcecpp_40e63686ad7f/sourceCpp_9777.so预期在:/var/folders/sv/rhmpnyt91kdb10d1hnz_zd1c0000gn/T//RtmpZiCsVD/sourcecpp_40e63686ad7f/sourceCpp_9777.so中的平面命名空间

通过一些故障排除,有问题的线似乎是:

in.push(boost::iostreams::gzip_decompressor());
Run Code Online (Sandbox Code Playgroud)

更具体地说, …

boost r rcpp

5
推荐指数
1
解决办法
253
查看次数

标签 统计

boost ×1

r ×1

rcpp ×1