boost::asio脱离boost独立编译(windows)

来源:互联网 发布:zbrush for mac中文 编辑:程序博客网 时间:2024/05/29 14:23

boost.asio强大的开源异步网络库,随着c++11的诞生,代码对boost的依赖已经逐步减少,因为boost的依赖库太过庞大, boost的很多优秀的模块都

已经加入到c++11,如智能指针,auto,bind,智能锁,线程等等..

废话不多说了,asio的官网已经说明可以脱离boost独立编译了, 但只是简单的介绍了linux下的脱离编译,下面进入正题:

//1.在工程属性"c++/预处理器/预处理器定义"中加入下面两个宏定义_WIN32_WINNT 0x0A00 //声明操作系统为WIN10ASIO_STANDALONE//独立使用asio//2.设置工程属性"常规/字符集"设置为使用多字节字符集//3.将asio源码拷贝到指定目录,并在工程属性包含这个路径



现在我们简单的写个demo测试一下(demo是网上随便找的例子改写一下测试可用性)

#include "stdafx.h"#include "asio.hpp"#include <iostream>using namespace std;using namespace asio;using asio::ip::tcp;#include<functional>class myasio{public:myasio():m_acc(m_iosvr, tcp::endpoint(tcp::v4(), 1986)){}~myasio(){}public:int start(){std::shared_ptr<tcp::socket> psock(new tcp::socket(m_iosvr));m_acc.async_accept(*psock, [&](asio::error_code err) {if (err){return;}start();std::cout << psock->remote_endpoint().address() << std::endl;time_t now = time(0);std::string msg = ctime(&now);asio::error_code igerr;psock->write_some(asio::buffer(msg), igerr);});m_iosvr.run();return 0;}protected:void accept_handler(std::shared_ptr<tcp::socket> ps, asio::error_code err){if (err){return;}start();std::cout << ps->remote_endpoint().address() << std::endl;time_t now = time(0);std::string msg = ctime(&now);asio::error_code igerr;ps->write_some(asio::buffer(msg), igerr);}private:io_servicem_iosvr;tcp::acceptorm_acc;};int main(){    myasio asio;    asio.start();    return 0;}

在vs2010和vs2017下都编译通过(以上测试demo是在vs2017下编译)

                                             
0 0