Windows下编译libevent

环境: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位的







猜你喜欢

转载自blog.csdn.net/youyudexiaowangzi/article/details/80221795