1. 程式人生 > >windows下編譯libevent(2.1.8)及使用

windows下編譯libevent(2.1.8)及使用

一:獲取libevent

github地址:https://github.com/libevent/libevent/releases

下載2.1.8穩定版

二:編譯libevent

我是用的visual studio 2010,當然也可以使用更高的版本

啟動後,進入"Libevent-release-2.1.8-stable"所在的目錄

直接執行會報如下錯誤:

按照提示分別修改:3611行,3655行內容

struct http_server hs = { .port = 0, .ssl = ssl, };
改為
struct http_server hs = { 0, ssl, };

再次編譯會在目錄下生成三個靜態庫:libevent.lib,libevent_core.lib,libevent_extras.lib 表示編譯完成。

三:使用libevent實現定時器功能

vs2010新建專案,把三個靜態庫libevent.lib,libevent_core.lib,libevent_extras.lib,複製到工程下,把include目錄複製到工程下,把WIN32-code/nmake/event2下的event-config.h標頭檔案複製到include/event2目錄下

新建main.cpp檔案,內容如下:

/********************************************************
Copyright (C),  2016-2018,
FileName:		main
Author:        	woniu201
Email:         	
[email protected]
Created: 2018/11/14 Description: 使用libevent實現定時器功能 ********************************************************/ #include <event2/event.h> #include <event2/bufferevent.h> #include <event2/event_struct.h> #include <ws2tcpip.h> #pragma comment(lib, "ws2_32.lib") #pragma comment(lib, "wsock32.lib") #pragma comment(lib, "libevent.lib") #pragma comment(lib, "libevent_core.lib") #pragma comment(lib, "libevent_extras.lib") static void timeout_cb(int fd, short event, void *arg) { printf("run timeout_cb1\n"); } int main() { #ifdef WIN32 WORD wVersionRequested; WSADATA wsaData; wVersionRequested = MAKEWORD(2, 2); (void)WSAStartup(wVersionRequested, &wsaData); #endif struct event_base *base; base = event_base_new(); event event1 ; event_assign(&event1, base, -1, EV_PERSIST, timeout_cb, (void*) &event1); struct timeval tv; tv.tv_sec = 1; tv.tv_usec = 0; event_add(&event1, &tv); event_base_dispatch(base); getchar(); return 1; }