# 官方网站:https://libevent.org/# 百度百科:https://baike.baidu.com/item/libevent/2492112?fr=aladdin
# win10 x64# visual studio 2017# perl 5.24.3.2404# nasm 2.13.03# zlib 1.2.11# openssl 1.1.1# libevent 2.1.8
1. zlib批处理文件
@echo "zlib build start"set VS2017="E:\Visual Studio 2017\VC\Auxiliary\Build\vcvarsamd64_x86.bat"set OUT="G:\C++\libevent\out\vs2017_32\zlib"call %VS2017%cd zlib-1.2.11nmake f win32\Makefile.msc cleannmake f win32\Makefile.mscmd %OUT%\libmd %OUT%\binmd %OUT%\includecopy Y *.lib %OUT%\libcopy Y *.h %OUT%\includecopy Y *.dll %OUT%\bincopy Y *.exe %OUT%\bin@echo "zlib build successed"pause
2. openssl批处理文件
预装perl、nasm并配置环境变量
@echo "openssl build start"set VS2017="E:\Visual Studio 2017\VC\Auxiliary\Build\vcvarsamd64_x86.bat"set OUT="G:\C++\libevent\out\vs2017_32\openssl"call %VS2017%cd G:\C++\libevent\openssl-1.1.1G:perl Configure VC-WIN32 --prefix=%OUT%nmake cleannmakenmake install@echo "openssl build successed"pause
3. libevent
# (1)libevent编译nmake /f Makefile.nmake OPENSSL_DIR=G:\C++\libevent\out\vs2017_32\openssl# 错误正在生成代码...cl I.. I../WIN32-Code I../WIN32-Code/nmake I../include /I../compat /DHAVE_CONFIG_H /DTINYTEST_LOCAL /IG:\C++\libevent\out\vs2017_32\openssl\include /DEVENT__HAVE_OPENSSL /Ox /W3 /wd4996 /nologo ..\libevent.lib ws2_32.lib shell32.lib advapi32.lib ..\libevent_openssl.lib G:\C++\libevent\out\vs2017_32\openssl\lib\libeay32.lib G:\C++\libevent\out\vs2017_32\openssl\lib\ssleay32.lib gdi32.lib User32.lib regress.obj regress_buffer.obj regress_http.obj regress_dns.obj regress_testutils.obj regress_rpc.obj regress.gen.obj regress_et.obj regress_bufferevent.obj regress_listener.obj regress_util.obj tinytest.obj regress_main.obj regress_minheap.obj regress_iocp.obj regress_thread.obj regress_finalize.obj regress_ssl.objLINK : fatal error LNK1181: 无法打开输入文件“G:\C++\libevent\out\vs2017_32\openssl\lib\libeay32.lib”NMAKE : fatal error U1077: “"E:\Visual Studio 2017\VC\Tools\MSVC\14.16.27023\bin\HostX64\x86\cl.EXE"”: 返回代码“0x2”Stop.NMAKE : fatal error U1077: “"E:\Visual Studio 2017\VC\Tools\MSVC\14.16.27023\bin\HostX64\x64\nmake.exe"”: 返回代码“0x2”Stop.# 原因:libevent-master\test\Makefile.nmake $(SSL_LIBS)属性引用了已移除的openssl类库# 修改:修改Makefile.nmake $(SSL_LIBS)属性为编译好的openssl类库,如下SSL_LIBS=..\libevent_openssl.lib $(OPENSSL_DIR)\lib\libeay32.lib $(OPENSSL_DIR)\lib\ssleay32.lib gdi32.lib User32.lib=>SSL_LIBS=..\libevent_openssl.lib $(OPENSSL_DIR)\lib\libcrypto.lib $(OPENSSL_DIR)\lib\libssl.lib gdi32.lib User32.lib# (2)添加zlib支持# Makefile.name添加zlib编译REGRESS_OBJS=regress.obj regress_buffer.obj regress_http.obj regress_dns.obj \regress_testutils.obj \regress_rpc.obj regress.gen.obj \regress_et.obj regress_bufferevent.obj \regress_listener.obj regress_util.obj tinytest.obj \regress_main.obj regress_minheap.obj regress_iocp.obj \regress_thread.obj regress_finalize.obj $(SSL_OBJS)=>REGRESS_OBJS=regress.obj regress_buffer.obj regress_http.obj regress_dns.obj \regress_testutils.obj \regress_rpc.obj regress.gen.obj \regress_et.obj regress_bufferevent.obj \regress_listener.obj regress_util.obj tinytest.obj \regress_main.obj regress_minheap.obj regress_iocp.obj \regress_thread.obj regress_finalize.obj $(SSL_OBJS) regress_zlib.obj# Makefile.name添加zlib includeCFLAGS=/I.. /I../WIN32-Code /I../WIN32-Code/nmake /I../include /I../compat /DHAVE_CONFIG_H /DTINYTEST_LOCAL $(SSL_CFLAGS)=>CFLAGS=/I.. /I../zlib/include /I../WIN32-Code /I../WIN32-Code/nmake /I../include /I../compat /DHAVE_CONFIG_H /DTINYTEST_LOCAL $(SSL_CFLAGS)# Makefile.name添加zlib libLIBS=..\libevent.lib ws2_32.lib shell32.lib advapi32.lib=>LIBS=..\libevent.lib ws2_32.lib shell32.lib advapi32.lib ..\zlib\lib\zdll.lib# WIN32-Code\nmake\event2\event-config.h添加zlib宏定义#define EVENT__HAVE_LIBZ# 清理nmake环境重新编译nmake /f Makefile.nmake cleannmake /f Makefile.nmake OPENSSL_DIR=G:\C++\libevent\out\vs2017_32\openssl# 测试 test\regress > test.logbufferevent/bufferevent_zlib: [forking] OK
批处理文件
@echo "libevent build start"set VS2017="E:\Visual Studio 2017\VC\Auxiliary\Build\vcvarsamd64_x86.bat"set OUT="G:\C++\libevent\out\vs2017_32\libevent"call %VS2017%cd libevent-masternmake /f Makefile.nmake cleannmake /f Makefile.nmake OPENSSL_DIR=G:\C++\libevent\out\vs2017_32\opensslmd %OUT%\libmd %OUT%\binmd %OUT%\includecopy /Y *.lib %OUT%\libxcopy /S/Y include %OUT%\includexcopy /S/Y WIN32-Code\nmake %OUT%\includecopy /Y *.dll %OUT%\bincopy /Y *.exe %OUT%\bin@echo "libevent build successed"pause
#include <event2/event.h>#include <iostream>int main(){#ifdef _WIN32WSADATA wsa;WSAStartup(MAKEWORD(2,2), &wsa);#endifstd::cout << "Hello libevent!\n";event_base * base = event_base_new();if (base) {std::cout << "libevent环境正常" << std::endl;}return 0;}



文章转载自hCodeisDawn,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




