Windows下编译libevent

1.windows下编译libevent,将会用到 "libevent-2.0.10-stable/" 目录下的Makefile.nmake.这个makefile会包含 "WIN32-Code\event2"下的event-config.h文件,里面用到了编译WIN32静态库需要设定的宏。


2.还是有3个文件要手动加入宏

event_iocp.c,evthread_win32.c,listener.c中文件头一行加入如下宏定义:#define _WIN32_WINNT 0x500,为什么要加入这个宏呢,

因为event_iocp里用到<winbase.h>头文件(<windows.h>会包含它)里的函数定义,如InitializeCriticalSectionAndSpinCount,而<winbase.h>这个头文件里这个函数是这样定义的:

#if (_WIN32_WINNT >= 0x0403)
WINBASEAPI
BOOL
WINAPI
InitializeCriticalSectionAndSpinCount(
    __out LPCRITICAL_SECTION lpCriticalSection,
    __in  DWORD dwSpinCount
    );


WINBASEAPI
DWORD
WINAPI
SetCriticalSectionSpinCount(
    __inout LPCRITICAL_SECTION lpCriticalSection,
    __in    DWORD dwSpinCount
    );
#endif


这下知道了吧,所以要定义_WIN32_WINNT这个宏,而且值要大于0x0403。如果没有这个宏或不满足条件,编译器会假定这个函数没有定义,等到链接时再寻找它,

这样这个函数的符号就假定返回一个int,而显示标准库文件里这个函数不是返回int,所以在链接时就会找不到这个函数符号啦!


另外,还要注意宏一定要定义在#include <windows.h>之前,不然还是没有作用哦。


3.然后打开VS2005的命令行提示:

切换到"libevent-2.0.10-stable/" 目录下,执行nmake /f Makefile.nmake。即可生成我们需要的libevent_core.lib libevent_extras.lib libevent.lib 3个静态库文件。

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

self-motivation

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值