小编ken*_*nba的帖子

libboost 1.62错误选项--log_sink

我只是安装boost 1.62并运行Boost单元测试选件,--log_sink=output.xml但出现错误。

这是我的命令行

./App --log_level=test_suite --log_format=JUNIT --log_sink=output.xml
Run Code Online (Sandbox Code Playgroud)

我从boost得到这个错误信息

test setup error: Access with invalid type for argument corresponding to parameter log_sink
Run Code Online (Sandbox Code Playgroud)

我已经进行了单元测试,boost 1.56没有错误,--log_sink我也不知道为什么会发生boost 1.62

c++ boost unit-testing boost-test

2
推荐指数
1
解决办法
432
查看次数

Boost 1.70 io_service 弃用

我正在尝试将一些旧代码从使用 io_service 迁移到 io_context 作为基本 tcp 接受器,但是在将 get_io_service() 切换到 get_executor().context() 时遇到问题,导致以下错误:

\n
cannot convert \xe2\x80\x98boost::asio::execution_context\xe2\x80\x99 to \xe2\x80\x98boost::asio::io_context&\xe2\x80\x99\n
Run Code Online (Sandbox Code Playgroud)\n

这是听众:

\n
ImageServerListener::ImageServerListener(boost::asio::io_context& io)\n{\n    _acceptor = new boost::asio::ip::tcp::acceptor(io, boost::asio::ip::tcp::endpoint(boost::asio::ip::tcp::v4(), sConfig.net.imageServerPort));\n    StartAccept();\n}\n\nImageServerListener::~ImageServerListener()\n{\n    delete _acceptor;\n}\n\nvoid ImageServerListener::StartAccept()\n{\n    std::shared_ptr<ImageServerConnection> connection = ImageServerConnection::create(_acceptor->get_executor().context());\n    _acceptor->async_accept(connection->socket(), std::bind(&ImageServerListener::HandleAccept, this, connection));\n}\n\nvoid ImageServerListener::HandleAccept(std::shared_ptr<ImageServerConnection> connection)\n{\n    connection->Process();\n    StartAccept();\n}\n
Run Code Online (Sandbox Code Playgroud)\n

为了返回 io_context 而不是execution_context,必须更改什么?

\n

c++ boost boost-asio c++11

2
推荐指数
1
解决办法
1909
查看次数

boost ssl连接过程失败

我正在尝试将著名的boost ssl客户端/服务器连接示例合并到一个程序中。供您参考,基类如下:

#include <cstdlib>
#include <iostream>
#include <boost/bind.hpp>
#include <boost/asio.hpp>
#include <boost/asio/ssl.hpp>

namespace bt
{
//
// client.cpp
// ~~~~~~~~~~
//
// Copyright (c) 2003-2011 Christopher M. Kohlhoff (chris at kohlhoff dot com)
//
// 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)
//


enum { max_length = 1024 };

class client
{
public:
  client(boost::asio::io_service& io_service, boost::asio::ssl::context& context,
      boost::asio::ip::tcp::resolver::iterator endpoint_iterator)
    : socket_(io_service, context)
  {
    boost::asio::ip::tcp::endpoint endpoint = *endpoint_iterator;
    socket_.lowest_layer().async_connect(endpoint, …
Run Code Online (Sandbox Code Playgroud)

c++ ssl boost boost-asio

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

cmake FindBoost 在 Windows 上使用 MinGW 构建时找不到 Boost 库

qtcreator支持qmakecmake跨平台开发,并且 qmake适用于两者msvcMinGW基于Windows. 但是,我更愿意只支持一种工具:cmake.

CMakeLists.txt通过-httplib的工作精细linux,用的时候cmake建立msvcWindows。但是,当使用cmaketo build MinGWon 时Windows,出现以下错误:

C:/Program Files/CMake/share/cmake-3.13/Modules/FindBoost.cmake:2100 处的 CMake 错误(消息):
无法找到请求的 Boost 库。

升压版本:1.69.0

Boost 包含路径:D:/DevLibraries/boost/boost_1_69_0

找不到以下 Boost 库:

      boost_system
Run Code Online (Sandbox Code Playgroud)

没有找到 Boost 库。您可能需要将 BOOST_LIBRARYDIR 设置为包含 Boost 库的目录或将 BOOST_ROOT 设置为 Boost 的位置。

无论是BOOST_LIBRARYDIRBOOST_ROOT环境变量设置和使用时发现Visual Studio 15 2017 Win64发电机和默认本地编译器

该错误消息表明,在使用MinGW Makefiles和默认本机编译器时,cmake …

c++ boost cmake

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

即使使用strand,async_writes的顺序也不正确

我正在编写一个程序,该程序将读取的数据转发给另一个对等方。我有一个方法,每次在套接字上读取数据后都会被调用。此方法将数据分条发送,以将其写回到另一个对等方。当发送大量数据时,应用程序发送回的数据与接收到的数据不同,问题在于不再对数据进行排序。只有在boost :: asio :: io_service中使用多个线程时,才会出现这种情况。

在套接字上读取某些数据时,将调用handleGatewayReply。此时(1),在将数据写入文件之后,我可以看到数据仍然是有序的。此后,将调用postBackendReply,并且数据仍然有序(2)。但是在SessionConnection :: postReply中,如果我将数据刷新到文件(3),则可以看到不再对数据进行排序。我现在看不到为什么订单丢失了,我试图在handleGatewayReply和postBackendReply中使用一个代码段(如代码所示),但是行为仍然相同。

抱歉,我无法提交一个最小,完整和可验证的示例,因为该错误太难发现,需要多线程转发大量数据。

  void Reply::handleGatewayReply(std::stringstream* stream)
  {
    // Flush data to file (1)
    m_strand.post(std::bind([=]() {  
        postBackendReply(*stream);
      delete stream;
    }
    }));

  }

void Reply::postBackendReply(const std::stringstream& stream)
  {
    auto buffer = std::make_shared<Buffer>();
    buffer->m_buffers.push_back(stream.str());
    // Flush data to file (2)
    auto connection = m_request->connection();
    if (connection) {
//    connection->postReply(buffer); // doesn't work either
          m_strand.post(std::bind(&SessionConnection::postReply, connection,buffer));
    }

  }


  void SessionConnection::postReply(BufferPtr buffer)
  {
      // Flush data to file (3)
      m_ioService.post(
        m_ostrand.wrap(
          std::bind(&SessionConnection::sendNext, 
                    shared_from_this(), buffer)));
    }
  }
Run Code Online (Sandbox Code Playgroud)

c++ sockets multithreading boost boost-asio

0
推荐指数
1
解决办法
65
查看次数