Linux下编译参考源码中的README文件便可,这里主要记录Windows下的编译。linux
一.准备工做c++
去官网下载最新的稳定发布版本libevent-2.0.22-stablewindows
官网地址:http://libevent.org/api
二.使用VS2012编译服务器
1.解压libevent到C:\Users\zhang\Desktop\libevent-2.0.22-stableapp
2.打开“VS2012开发人员命令提示”工具,以下图所示。socket
3.输入指令开始编译,以下图所示。工具
有网友说编译以前应该在如下3个文件开头添加“#define _WIN32_WINNT 0x0500”学习
libevent-2.0.22-stable\event_iocp.c
libevent-2.0.22-stable\evthread_win32.c
libevent-2.0.21-stable\listener.c开发工具
可是并无说明为何要添加,并且我没添加,编译和使用时也没什么问题。
后来仍是查了一下_WIN32_WINNT的意义,能够参考:修改WINVER、_WIN32_WINNT和_MSC_VER
4.编译结果
编译成功后,在libevent-2.0.22-stable目录下生成以下三个库文件。
libevent.lib
libevent_core.lib
libevent_extras.lib
至于这三个库文件的功能,能够参考:libevent学习之一:libevent源码的特色和结构
5.测试
我使用的开发工具是Qt 5.5.1 VS2012。
新建一个控制台工程,在工程根目录中新建“include”文件夹,而后进行以下三步操做。
(1)将C:\Users\zhang\Desktop\libevent-2.0.22-stable\include\event2文件夹拷贝到工程的“include”文件夹
(2)将C:\Users\zhang\Desktop\libevent-2.0.22-stable\WIN32-Code\event2\event-config.h文件拷贝到工程的“include\event2”文件夹
(3)将C:\Users\zhang\Desktop\libevent-2.0.22-stable\WIN32-Code\tree.h文件拷贝到工程的“include”文件夹
在工程根目录中新建“lib”文件夹,将生成的三个库文件拷贝到该文件夹。
pro文件以下所示:
windows下socket通讯须要加载Ws2_32.lib,这个你们都知道,至于为什么须要Advapi32.lib,能够参考:LNK2019:没法解析的外部符号_imp_CryptAcquireContextA@20
而后将libevent自带的例子C:\Users\zhang\Desktop\libevent-2.0.22-stable\sample|h\ello-world.c拷贝到工程中并编译。须要注意的是编译时有两处 C2440:“初始化”:没法从“void *”转换为“event_base *” 的错误,强制转换一下便可。
这是一个简单的服务器的例子。
三.使用MingW编译
1.下载安装MSYS-1.0.11,安装后将c:\MinGW\msys\1.0\etc 中的fstab.sample文件重命名为fstab,并将fstab中的内容改成c:/Qt/Qt5.5.1/Tools/mingw492_32 /mingw,这里使用Qt自带的mingw版本,注意路径c:/Qt/Qt5.5.1/Tools/mingw492_32和/mingw之间有空格
2.打开MSYS,cd 到C:\Users\zhang\Desktop\libevent-2.0.22-stable目录,./configure ,make,make install,安装成功后,生成静态库,以下所示。
c:\MinGW\msys\1.0\local\lib\libevent.a,
c:\MinGW\msys\1.0\local\lib\libevent_corelibevent.a,
c:\MinGW\msys\1.0\local\lib\libevent_extra.a
将这三个库文件拷贝到工程“lib”目录中。
将下图所示的头文件拷贝到工程“linclude”目录中。
3.测试
仍是用那个简单服务器的例子。
pro文件以下所示:
注意和“使用VS'2012编译”的pro文件相比,多了最后的DEFINES += WIN32,不然编译工程时会报错。
固然此时编译工程使用的Qt版本是Qt 5.5.1 MingW。
http://blog.csdn.net/caoshangpa/article/details/52838156