c++ - 如何在 Windows 上安装 boost

标签 c++ windows boost

我正在使用 Windows 8.1,visual studio community 2013。
我下载了 boost 1.59。
然后我打开 VS2013 开发人员命令提示符,运行 bootstrap.bat,然后运行 ​​b2.exe。

所有.lib 文件都放在./stage/lib/ 下。

我设置了 C++ 包含路径和链接器路径。我成功地构建了我的程序并在 Debug模式下运行。
这是我收到的错误消息:

Unhandled exception at 0x77394598 in BoostStation.exe: Microsoft C++ exception: boost::exception_detail::clone_impl<boost::exception_detail::error_info_injector<boost::system::system_error> > at memory location 0x001BFD74.

这里是断点:

throw enable_current_exception(enable_error_info(e)); // from throw_exception.hpp

谁知道怎么解决这个问题?
另一个问题,此构建是否生成任何 .dll 文件,我在哪里可以找到它们?

这是我的程序:
多播发送器.h

#include <boost/asio.hpp>
#include <boost/scoped_ptr.hpp>
#include <string>

class MulticastSender
{
public:
    MulticastSender(const boost::asio::ip::address& multicast_addr, const unsigned short multicast_port)
        : ep_(multicast_addr, multicast_port)
    {
        socket_.reset(new boost::asio::ip::udp::socket(svc_, ep_.protocol()));
    }

    ~MulticastSender()
    {
        socket_.reset(NULL);
    }

public:
    void send_data(const std::string& msg)
    {
        socket_->send_to(boost::asio::buffer(msg), ep_);
    }

private:
    boost::asio::ip::udp::endpoint                  ep_;
    boost::scoped_ptr<boost::asio::ip::udp::socket> socket_;
    boost::asio::io_service                         svc_;
};

主要.cpp

#include "stdafx.h"
#include "MulticastSender.h"


int _tmain(int argc, _TCHAR* argv[])
{
    boost::asio::ip::address multiCastGroup;
    multiCastGroup.from_string("192.168.32.1");
    MulticastSender outDoor(multiCastGroup, 6000);

    while (true)
    {
        outDoor.send_data("Hello");
        Sleep(1000);
    }

    return 0;
}

最佳答案

您的 boost 安装没问题,因为显然您能够编译和链接一个抛出 boost::exception 的程序。 .

通过将代码包装在 try/catch block 中来捕获异常,然后打印出消息。我相应地更改了您的main-函数:

#include "stdafx.h"
#include "MulticastSender.h"
#include "boost/exception.hpp"
#include <iostream>

int _tmain(int argc, _TCHAR* argv[])
{
    try
    {
        boost::asio::ip::address multiCastGroup;
        multiCastGroup.from_string("192.168.32.1");
        MulticastSender outDoor(multiCastGroup, 6000);

        while (true)
        {
            outDoor.send_data("Hello");
            Sleep(1000);
        }
    }
    catch (const std::exception& e)
    {
        std::cout << boost::diagnostic_information(e) << std::endl;
    }
    return 0;
}

这将捕获由 boost 抛出的异常并在程序退出之前打印它的消息。

您还应该阅读一般的异常(exception)情况:http://www.cplusplus.com/doc/tutorial/exceptions/

关于c++ - 如何在 Windows 上安装 boost,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32536444/

相关文章:

windows - 如何在Docker-Windows中查看文件结构?

c++ - 在成员dynamic_bitset上使用boost::from_block_range时出错,但在本地dynamic_bitset上不这样做

c++ - 将 boost::any 传递给 boost::bind 的结果

c++ - T 为 QPointF 时的模板转换运算符

C++/Windows : How to report an out-of-memory exception (bad_alloc)?

windows - 是否可以使用 AWS 运行普通的 Windows 10 机器?

linux - boost::thread::try_join_for() 函数出错

c++ - 如何在 C++ 中生成具有均值的随机数?

c++ - Windows进程管理

c++ - 使用 Xerces 验证未定义架构的 XML