天天看點

Win7下編譯libevent

準備工作

      去官網下載下傳最新的穩定釋出版本libevent-2.0.22-stable

      官網位址:http://libevent.org/

使用VS2012編譯

    1.解壓libenvent到C:\Users\zhang\Desktop\libevent-2.0.22-stable

    2.打開“VS2012開發人員指令提示”工具,如下圖所示。

Win7下編譯libevent

       3.輸入指令開始編譯,如下圖所示:

Win7下編譯libevent

     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”目錄中。

Win7下編譯libevent

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