在windows下编译asio库(asio.lib、asio.dll)
简介
asio 是boost库中优秀的网络库。asio是一个异步的io库,支持以同步或异步的方式处理事件,也可以用于基于tcp或udp的网络通信。
(1)可移植到windows(完成端口实现)、linux(epoll实现)、FreeBSD、UNIX(kqueue实现)。
(2)可扩展性。
(3)效率很高。
(4)易使用,类 Socket API 编程模型。
支持同步、异步通信方式。
源码下载
路径
二级链接(可能随时更新到新版本):sourceforge网站的asio1.30.2版本代码asio C++ library - Browse /asio/1.30.2 (Stable) at SourceForge.net
新建asio.cpp文件
#define ASIO_SEPARATE_COMPILATION
#define ASIO_DYN_LINK
#define _WIN32_WINNT 0x0601
#include "asio/impl/src.hpp"
将asio.cpp文件放在asio-1.30.2\include\文件夹中
(该文件夹中一定有asio文件夹)
创建编译脚本或编译
REM 声明编译环境 表示在64位环境中生成32位 程序
call "D:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Auxiliary\Build\vcvarsamd64_x86.bat"
echo.
echo "run vcvarsamd64_x86.bat"
echo.
REM 编译 /c可避免错误:LINK : fatal error LNK1561: 必须定义入口点
cl /EHsc /c asio.cpp
REM 生成lib文件和obj文件
lib /out:asio.lib asio.obj
REM 链接
link /dll asio.obj
执行上面过程后,可以生成lib和dll文件
注:
/EHsc参考下面链接学习
vs中/EHa、/EHs、/EHsc的区别_ehsc eha-CSDN博客
题外
因为asio是头文件的库,所以,可能编译了一个寂寞