準備工作
去官網下載下傳最新的穩定釋出版本libevent-2.0.22-stable
官網位址:http://libevent.org/
使用VS2012編譯
1.解壓libenvent到C:\Users\zhang\Desktop\libevent-2.0.22-stable
2.打開“VS2012開發人員指令提示”工具,如下圖所示。
![](https://img.laitimes.com/img/__Qf2AjLwojIjJCLyojI0JCLicmbw5SOzcjM0AjMykTMtcTM3gDMxUDNwgTMwEjNxAjMtIjM1EDNz8CXwEjNxAjMvwlMyUTM0MzLcd2bsJ2Lc12bj5ycn9Gbi52YuUTMwIzcldWYtl2Lc9CX6MHc0RHaiojIsJye.png)
3.輸入指令開始編譯,如下圖所示:
4.編譯結果
編譯成功後,在libevent-2.0.22-stable目錄下生成如下三個庫檔案。
libevent.lib
libevent_core.lib
libevent_extras.lib
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檔案如下所示:
QT += core
QT -= gui
CONFIG += c++11
TARGET = server
CONFIG += console
CONFIG -= app_bundle
TEMPLATE = app
SOURCES += main.cpp
INCLUDEPATH += include
LIBS += $$PWD/lib/libevent.lib \
$$PWD/lib/libevent_core.lib \
$$PWD/lib/libevent_extras.lib \
LIBS += -lWs2_32 -lAdvapi32
windows下socket通信需要加載Ws2_32.lib,然後将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檔案如下所示:
QT += core
QT -= gui
CONFIG += c++11
TARGET = server
CONFIG += console
CONFIG -= app_bundle
TEMPLATE = app
SOURCES += main.cpp
INCLUDEPATH += include
LIBS += $$PWD/lib/libevent.a \
$$PWD/lib/libevent_core.a \
$$PWD/lib/libevent_extra.a \
LIBS += -lWs2_32 -lAdvapi32
DEFINES += WIN32
注意和“使用VS'2012編譯”的pro檔案相比,多了最後的DEFINES += WIN32,否則編譯工程時會報錯。
當然此時編譯工程使用的Qt版本是Qt 5.5.1 MingW。
參考:
https://www.yuque.com/docs/share/875bf1ba-0d81-4f7c-9651-02db701acbf0