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