libevent版本為libevent-1.4.5-stable。
WIN32-Prj目錄下有VC項(xiàng)目文件。
libevent.sln不能用,因?yàn)橹挥衦egress有vcproj文件,其他子項(xiàng)目都是dsp文件。
而libevent.dsw不包括regress。
刪除sln文件,直接打開dsw文件,自動(dòng)轉(zhuǎn)換除regress之外的4個(gè)工程為vcproj。
fatal error C1083: 無法打開包括文件:“sys/time.h”
#ifdef _EVENT_HAVE_SYS_TIME_H
#include <sys/time.h>
應(yīng)該去除_EVENT_HAVE_SYS_TIME_H,不要包含sys/time.h。
_EVENT_HAVE_SYS_TIME_H 定義于 event-config.h,肯定會(huì)包含進(jìn)來,
所以必須更改 event-config.h 文件。
為VS2005復(fù)制一份libevent,然后更改它。
config.h是由configure生成的。
make時(shí)根據(jù) config.h 生成event-config.h,但有個(gè)缺省的event-config.h。
MSVC編譯時(shí)不能生成config.h文件,而應(yīng)該使WIN32-Code/config.h生效。
用MSVC編譯WIN32-Code/win32.c時(shí)會(huì)包含該WIN32-Code/config.h。
event-config.h要手工改,memcached項(xiàng)目有針對(duì)libevent1.4.4的更改,可拿來用。
(libevent-1.4.4-stable-win32.zip,http://code.jellycan.com/memcached/,但下載一點(diǎn)就會(huì)斷)
參考jellycan的libevent.diff,即對(duì)libevent1.4.4的更改。
參考spserver項(xiàng)目中的libevent-main-iocp-1也行。
用libevent-main-iocp-1\WIN32-Code\event-config.h代替event-config.h。
去除mics.c。libevent可編譯成功。
但是幾個(gè)test項(xiàng)目無法成功編譯,應(yīng)該是因?yàn)闆]有config.h的配置。
對(duì)于event_test項(xiàng)目:
__func__未定義。直接在項(xiàng)目宏定義中添加__func__=__FUNCTION__。
實(shí)際上該定義在WIN32-Code\config.h中有。
libevent.lib(event.obj) : error LNK2019: 無法解析的外部符號(hào) _evutil_gettimeofday,該符號(hào)在函數(shù) _gettime 中被引用
但是libevent.lib只有event.c,還缺許多函數(shù)。
在libevent項(xiàng)目中再添加buffer.c evbuffer.c evutil.c singal.c strlcpy.c,并重新生成。
(可參考configure生成的Makefile決定需要哪些文件。)
無法解析的外部符號(hào) __imp__select@20,該符號(hào)在函數(shù) _win32_dispatch 中被引用
添加ws2_32.lib
WinSocket未初始化,evutil_socketpair調(diào)用socket()失敗。
在main()中event_init()之前添加WSAStartup()。
參見regress的main()。
現(xiàn)在event_test可以編譯運(yùn)行,但會(huì)立即退出。
原因是win32_dispatch()中的select()調(diào)用出錯(cuò),WSAENOTSOCK (10038),
對(duì)非socket應(yīng)用select()就會(huì)報(bào)這個(gè)錯(cuò)誤。
(轉(zhuǎn)載請(qǐng)注明來源于金慶的專欄)
WIN32-Prj目錄下有VC項(xiàng)目文件。
libevent.sln不能用,因?yàn)橹挥衦egress有vcproj文件,其他子項(xiàng)目都是dsp文件。
而libevent.dsw不包括regress。
刪除sln文件,直接打開dsw文件,自動(dòng)轉(zhuǎn)換除regress之外的4個(gè)工程為vcproj。
fatal error C1083: 無法打開包括文件:“sys/time.h”
#ifdef _EVENT_HAVE_SYS_TIME_H
#include <sys/time.h>
應(yīng)該去除_EVENT_HAVE_SYS_TIME_H,不要包含sys/time.h。
_EVENT_HAVE_SYS_TIME_H 定義于 event-config.h,肯定會(huì)包含進(jìn)來,
所以必須更改 event-config.h 文件。
為VS2005復(fù)制一份libevent,然后更改它。
config.h是由configure生成的。
make時(shí)根據(jù) config.h 生成event-config.h,但有個(gè)缺省的event-config.h。
MSVC編譯時(shí)不能生成config.h文件,而應(yīng)該使WIN32-Code/config.h生效。
用MSVC編譯WIN32-Code/win32.c時(shí)會(huì)包含該WIN32-Code/config.h。
event-config.h要手工改,memcached項(xiàng)目有針對(duì)libevent1.4.4的更改,可拿來用。
(libevent-1.4.4-stable-win32.zip,http://code.jellycan.com/memcached/,但下載一點(diǎn)就會(huì)斷)
參考jellycan的libevent.diff,即對(duì)libevent1.4.4的更改。
參考spserver項(xiàng)目中的libevent-main-iocp-1也行。
用libevent-main-iocp-1\WIN32-Code\event-config.h代替event-config.h。
去除mics.c。libevent可編譯成功。
但是幾個(gè)test項(xiàng)目無法成功編譯,應(yīng)該是因?yàn)闆]有config.h的配置。
對(duì)于event_test項(xiàng)目:
__func__未定義。直接在項(xiàng)目宏定義中添加__func__=__FUNCTION__。
實(shí)際上該定義在WIN32-Code\config.h中有。
libevent.lib(event.obj) : error LNK2019: 無法解析的外部符號(hào) _evutil_gettimeofday,該符號(hào)在函數(shù) _gettime 中被引用
但是libevent.lib只有event.c,還缺許多函數(shù)。
在libevent項(xiàng)目中再添加buffer.c evbuffer.c evutil.c singal.c strlcpy.c,并重新生成。
(可參考configure生成的Makefile決定需要哪些文件。)
無法解析的外部符號(hào) __imp__select@20,該符號(hào)在函數(shù) _win32_dispatch 中被引用
添加ws2_32.lib
WinSocket未初始化,evutil_socketpair調(diào)用socket()失敗。
在main()中event_init()之前添加WSAStartup()。
參見regress的main()。
現(xiàn)在event_test可以編譯運(yùn)行,但會(huì)立即退出。
原因是win32_dispatch()中的select()調(diào)用出錯(cuò),WSAENOTSOCK (10038),
對(duì)非socket應(yīng)用select()就會(huì)報(bào)這個(gè)錯(cuò)誤。
(轉(zhuǎn)載請(qǐng)注明來源于金慶的專欄)