我希望从.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)
更具体地说, …