与RCPP在Ubuntu Xenial扔的std :: runtime_error当段错误
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了与RCPP在Ubuntu Xenial扔的std :: runtime_error当段错误相关的知识,希望对你有一定的参考价值。
我有RCPP一个非常奇怪的行为,连同libtorch。
我有2个函数的文件:
#include <torch/torch.h>
#include <Rcpp.h>
// [[Rcpp::export]]
void test_error ()
throw std::runtime_error("hi this is my error");
// [[Rcpp::export]]
void test_error2 ()
Rcpp::Rcout << torch::arange(1) << std::endl;
当我打电话test_error()
我得到一个segfault(G ++):
terminate called after throwing an instance of 'std::bad_alloc'
what(): std::bad_alloc
Aborted (core dumped)
铛++错误是:
terminate called after throwing an instance of 'std::length_error'
what(): basic_string::_M_create
Aborted (core dumped)
test_error2
按预期工作。
仅发生在Ubuntu Xenial此错误。我与Ubuntu忠实的和MacOS和无段错误的测试。
如果我从文件中删除代码test_error2
,我没有任何错误,即使我不删除#include <torch/torch.h>
线。
也测试用铛++和g ++编译。同样的错误。
我创建了一个小型回购qazxsw POI与小例子,我可以做。
有没有人有什么,这可能是什么想法?
注意配置文件会下载并pytorch网站自动安装libtorch。所以,如果你不希望这样不安装该软件包。
你可以尝试更换
here
什么我们的文档建议你做(在RCPP调用的函数,不会少)
throw std::runtime_error("hi this is my error");
看看会发生什么?
原来,编译它与旧版本Rcpp::stop("hi this is my error");
工作的罚款。
我安装g++
:
g++-4.9
。
编辑使用sudo apt-get install g++-4.9
的.R/Makevars
:
g++-4.9
然后重新编译RCPP和包装。
以上是关于与RCPP在Ubuntu Xenial扔的std :: runtime_error当段错误的主要内容,如果未能解决你的问题,请参考以下文章
如何将 std::vector<std::vector<double>> 转换为 Rcpp::Dataframe 或 Rcpp::NumericMatrix
(Rcpp)armadillos abs() 函数在 std::abs 工作时与 c++ double 一起使用时输出错误值
Vagrant box ubuntu/xenial64 没有密码的解决方法