环境:win8+vs2008
版本:libevent-2.1.8
解压到F:\libevent-2.1.8-stable
打开VS2008命令行
F:
cd libevent-2.1.8-stable
nmake /f Makefile.nmake
1.报错
regress_http.c(3611) : error C2059: syntax error : '.'
regress_http.c(3654) : error C2059: syntax error : '.'
进去看一下3611行代码如下
struct http_server hs= { .port = 0, .ssl = ssl, };
这个语法在VS2008的编译环境中好像不支持,于是改成
struct http_server hs;// = { .port = 0, .ssl = ssl, };
然后根据C语言规范,在变量定义完之后新增
hs.port = 0;
hs.ssl = ssl;
其他雷同
继续执行nmake /f Makefile.nmake
报错
NMAKE : fatal error U1073: don't know how to make 'print-winsock-errors.obj'
命令findstr /s /i print-winsock-errors *
查看哪里用到print-winsock-errors.obj
发现test\Makefile.nmake: print-winsock-errors.obj
在test目录查找,发现根本不存在print-winsock-errors.c文件
https://github.com/nmathewson/Libevent/blob/master/test/print-winsock-errors.c
可以从github中下载该文件
继续执行nmake /f Makefile.nmake
完成
libevent-2.1.8-stable目录中生成了
libevent.lib
libevent_core.lib
libevent_extras.lib
三个文件
新建工程时,添加这三个库,
还要新增vs自带的网络库
ws2_32.lib
wsock32.lib
不然编译新工程会报错
头文件在libevent-2.1.8-stable/include中
event2/event-config.h在libevent-2.1.8-stable/WIN32-Code/nmake中
如要指定编译为32位或者64位库,需要对Makfile.nmake进行修改
LIBFLAGS=/nologo
改为
LIBFLAGS=/nologo /MACHINE:X64
或者
LIBFLAGS=/nologo /MACHINE:X86
默认是32位的