【问题标题】:Endian conversion using boost使用 boost 进行字节序转换
【发布时间】:2016-01-19 19:20:47
【问题描述】:

我遵循所谓的manual of boost 来转换(交换)字节序。

尽管他们的code 比他们的手册更具可读性,有人可以解释一下我应该如何修复以下代码吗?

hh.cpp

#include <iostream>
#include <boost/array.hpp>
#include <boost/endian/conversion.hpp>

int main () {

  std::cout << boost::endian::endian_reverse(5);

  return 0;
}

制作:

g++ hh.cpp -o hh -Wall -Wconversion -Wfatal-errors -Wextra -std=c++11 -lboost_system -lrt  -lboost_wave -larmadillo -lboost_thread

错误:

hh.cpp:3:39: fatal error: boost/endian/conversion.hpp: No such file or directory
 #include <boost/endian/conversion.hpp>
                                       ^
compilation terminated.

更新

其他增强标头也包含在内。只有endian有问题。

ls /usr/include/boost/*

http://pastebin.com/nCciracE


更新

$ cat /usr/include/boost/version.hpp

结果:

//  Boost version.hpp configuration header file  ------------------------------//

//  (C) Copyright John maddock 1999. Distributed under the Boost
//  Software License, Version 1.0. (See accompanying file
//  LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

//  See http://www.boost.org/libs/config for documentation

#ifndef BOOST_VERSION_HPP
#define BOOST_VERSION_HPP

//
//  Caution, this is the only boost header that is guarenteed
//  to change with every boost release, including this header
//  will cause a recompile every time a new boost version is
//  released.
//
//  BOOST_VERSION % 100 is the patch level
//  BOOST_VERSION / 100 % 1000 is the minor version
//  BOOST_VERSION / 100000 is the major version

#define BOOST_VERSION 105400

//
//  BOOST_LIB_VERSION must be defined to be the same as BOOST_VERSION
//  but as a *string* in the form "x_y[_z]" where x is the major version
//  number, y is the minor version number, and z is the patch level if not 0.
//  This is used by <config/auto_link.hpp> to select which library version to link to.

#define BOOST_LIB_VERSION "1_54"

#endif

【问题讨论】:

  • boost headers 安装在哪里?
  • 您显然没有在boost manual 中设置boost 根目录 aka $BOOST_ROOT 并将其添加到您的INCLUDEPATH
  • 但其他 boost 标头都可以:#include
  • @ar2015 好的,您使用哪个版本的 boost? endian 是新库。
  • @ForEveR Boost 版本:0.19b.b8

标签: c++ boost endianness


【解决方案1】:

endian 库在boost version 1.58 中引入。 您有 1.54,此版本中没有 endian 库。您应该将 boost 更新到 1.58+,或者不使用 endian 库。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-08-17
    • 1970-01-01
    • 2014-11-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-27
    • 2022-01-22
    相关资源
    最近更新 更多