首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么xtensor中的第一个示例不能运行?

为什么xtensor中的第一个示例不能运行?
EN

Stack Overflow用户
提问于 2021-10-22 15:26:53
回答 1查看 218关注 0票数 1

我通过conda安装了xtensor

代码语言:javascript
复制
conda install -c conda-forge xtensor

我找到了安装X张量的位置,

代码语言:javascript
复制
path_xtensor="/amax/home/user/miniconda3/pkgs/xtensor-0.23.10-h4bd325d_0/include/"
path_xtl="/amax/home/user/miniconda3/pkgs/xtl-0.7.2-h4bd325d_1/include/"    

第一个例子是xtensor博士给出的,即

代码语言:javascript
复制
#include <iostream>
#include <xtensor/xarray.hpp>
#include <xtensor/xio.hpp>
#include <xtensor/xview.hpp>

int main(int argc, char* argv[])
{
    xt::xarray<double> arr1
        {{1.0, 2.0, 3.0},
         {2.0, 5.0, 7.0},
         {2.0, 5.0, 7.0}};

    xt::xarray<double> arr2
        {5.0, 6.0, 7.0};

    xt::xarray<double> res = xt::view(arr1, 1) + arr2;

    std::cout << res << std::endl;

    return 0;
}

随后,我在linux服务器上运行该命令。

代码语言:javascript
复制
g++ -I path_xtensor -I path_xtl x.cpp -o x

但是命令导致错误,日志太长,以下部分是:

代码语言:javascript
复制
/amax/home/user/miniconda3/pkgs/xtensor-0.23.10-h4bd325d_0/include/xtensor/xfunction.hpp:931:63: error: ‘int xt::xfunction_iterator<F, CT>::deref_impl’ is not a static data member of ‘class xt::xfunction_iterator<F, CT>’  
/amax/home/user/miniconda3/pkgs/xtensor-0.23.10-h4bd325d_0/include/xtensor/xfunction.hpp:931:63: error: template definition of non-template ‘int xt::xfunction_iterator<F, CT>::deref_impl’  
/amax/home/user/miniconda3/pkgs/xtensor-0.23.10-h4bd325d_0/include/xtensor/xfunction.hpp:931:58: error: ‘index_sequence’ is not a member of ‘std’  
inline auto xfunction_iterator<F, CT...>::deref_impl(std::index_sequence<I...>) const -> reference
^
/amax/home/user/miniconda3/pkgs/xtensor-0.23.10-h4bd325d_0/include/xtensor/xfunction.hpp:936:29: warning: variadic templates only available with -std=c++11 or -std=gnu++11  
template <class F, class... CT>  
^  
/amax/home/user/miniconda3/pkgs/xtensor-0.23.10-h4bd325d_0/include/xtensor/xfunction.hpp:937:30: warning: variadic templates only available with -std=c++11 or -std=gnu++11  
template <std::size_t... I>  
^  

...

/amax/home/user/miniconda3/pkgs/xtensor-0.23.10-h4bd325d_0/include/xtensor/xfunction.hpp: In member function ‘void xt::xfunction_stepper<F, CT>::step_leading()’:  
/amax/home/user/miniconda3/pkgs/xtensor-0.23.10-h4bd325d_0/include/xtensor/xfunction.hpp:1058:14: error: ‘ame a type  
virtual const char what() const noexcept override { return "bad_variant_access"; }  
^  
/amax/home/user/miniconda3/pkgs/xtl-0.7.2-h4bd325d_1/include/xtl/xvariant_impl.hpp:914:38: note: C++11 ‘noexcept’ only available with -std=c++11 or -std=gnu++11  
/amax/home/user/miniconda3/pkgs/xtl-0.7.2-h4bd325d_1/include/xtl/xvariant_impl.hpp:914:25: error: looser throw specifier for ‘virtual const char mpark::bad_variant_access::what() const’  
virtual const char what() const noexcept override { return "bad_variant_access"; }
^  
In file included from /usr/include/c++/5/ios:39:0,  
from /usr/include/c++/5/ostream:38,  
from /usr/include/c++/5/iostream:39,  
from x.cpp:24:  
/usr/include/c++/5/exception:68:25: error: overriding ‘virtual const char std::exception::what() const throw ()’  
virtual const char* what() const _GLIBCXX_USE_NOEXCEPT;  
^  
In file included from /amax/home/user/miniconda3/pkgs/xtl-0.7.2-h4bd325d_1/include/xtl/xvariant.hpp:13:0,  
from /amax/home/user/miniconda3/pkgs/xtensor-0.23.10-h4bd325d_0/include/xtensor/xstrided_view.hpp:20,
from /amax/home/user/miniconda3/pkgs/xtensor-0.23.10-h4bd325d_0/include/xtensor/xgenerator.hpp:27,
from /amax/home/user/miniconda3/pkgs/xtensor-0.23.10-h4bd325d_0/include/xtensor/xbuilder.hpp:31,
from /amax/home/user/miniconda3/pkgs/xtensor-0.23.10-h4bd325d_0/include/xtensor/xmanipulation.hpp:13,  
from /amax/home/user/miniconda3/pkgs/xtensor-0.23.10-h4bd325d_0/include/xtensor/xmath.hpp:28,
from /amax/home/user/miniconda3/pkgs/xtensor-0.23.10-h4bd325d_0/include/xtensor/xcontainer.hpp:25,
from /amax/home/user/miniconda3/pkgs/xtensor-0.23.10-h4bd325d_0/include/xtensor/xarray.hpp:20,
from x.cpp:25:  
/amax/home/user/miniconda3/pkgs/xtl-0.7.2-h4bd325d_1/include/xtl/xvariant_impl.hpp:917:3: error: expected unqualified-id before ‘[’ token  
[[noreturn]] inline void throw_bad_variant_access() {  
^  
x.cpp:38:1: error: expected ‘}’ at end of input  
}

预先感谢你的任何帮助/建议。

EN

回答 1

Stack Overflow用户

发布于 2022-05-02 19:34:43

下面的命令是您执行的完整命令行吗?

代码语言:javascript
复制
g++ -I path_xtensor -I path_xtl x.cpp -o x

然后,它缺少了两个有用的选项:

  • 要确保编译器使用的是现代c++标准,可以添加一个选项,比如-std=c++11-std=c++14,甚至是更新的标准,这取决于编译器支持什么,以及您想在项目的其余部分使用什么。xtensor至少需要c++11
  • 为了确保编译器对二进制程序使用良好的CPU优化,添加一些标志,以支持通用性能优化(如-O2 )和当前CPU (如-march=native )的特定硬件优化,除非您希望将生成的二进制文件移植到其他计算机(使用不太现代的CPU)。这可以极大地提高xtensor的性能。

这有用吗?

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69679448

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档