QT 环境下编写 BOOST ASIO程序

Asio是一个跨平台的、主要用于网络和其他一些底层输入/输出编程的C++库,一般和Boost库一起使用,也可以独立使用。

单独使用asio很简单,直接引用头文件就可以:

#include "asio.hpp"


但是在asio的很多例子程序中,经常会调用boost库,比如:

#include
... ...
        boost::bind(&server::handle_receive_from, this,
          asio::placeholders::error,
          asio::placeholders::bytes_transferred));

或者
#include
... ...
typedef boost::shared_ptr chat_session_ptr;

这就要求在编写asio程序时,需要连接boost库。


QT连接boost库可以按照下列步骤:
1)检查qt使用的编译器

如果使用了VS2010、VS2015的编译器,可以去
https://sourceforge.net/projects/boost/files/boost-binaries/1.69.0/  直接下载已经编译好的boost库文件,如
boost_1_69_0-msvc-12.0-64.exe
... ...
boost_1_69_0-msvc-8.0-32.exe

2)在工程文件中说明库文件的路径

在PRO文件中增加:

win32 {
LIBS += -lws2_32
LIBS += -LC:/boost_1_69_0/lib32-msvc-10.0 -llibboost_chrono-vc100-mt-gd-x32-1_69
}

INCLUDEPATH +=c:/asio-1.12.1/include c:/boost_1_69_0

3)如果QT使用了mingw编译器,可以先下载boost源码
https://www.boost.org/users/download/#live
然后自己用本地的mingw编译一下,详细过程可以参考
https://stackoverflow.com/questions/20265879/how-do-i-build-boost-1-55-with-mingw
大致步骤为:
首先,设置好mingw bin目录路径环境变量,保证在C:\boost_1_69_0目录下可以使用gcc
其次,进入\boost_1_69_0目录,运行
bootstrap gcc
b2 toolset=gcc
然后等上“很长”时间

将编译好的库文件复制到指定目录下,在pro文件中设置好路径就可以使用了!

#.Pro for mingw
win32 {
LIBS += -lws2_32  -lwsock32
LIBS += -LC:/boost_1_69_0/lib32-mgw53 -llibboost_chrono-mgw53-mt-x32-1_69
}

INCLUDEPATH +=c:/asio-1.12.1/include c:/boost_1_69_0

你可能感兴趣的:(笔记)