libevent 1.4在vs下的编译调试

最近想看一下源码,大家都推荐了libevent。libevent1.4.13相对libevent2.0简洁很多,所以就拿他入手了。当然还是边调试边学习好些。以下就是vs2012调试libevnet的方法。 其他vs版本应该也是一样的。

1.下载源码 libevent-1.4.13-stable.tar.gz 并解压

2.新建vs工程


3.\libevent-1.4.13-stable\libevent-1.4.13-stable\WIN32-Code 中的所有文件

    \libevent-1.4.13-stable\libevent-1.4.13-stable\WIN32-Code\compat 中sys整个文件夹 (直接拷贝文件夹)

     \libevent-1.4.13-stable\libevent-1.4.13-stable 中的下列文件: 挨着对比下吧,我也这样找的


在工程目录下新建include目录,将这三处拷贝到该目录下。再将include目录中所有的.h .c添加到工程中。如上图所。

将所有.c文件属性改为不使用预编译头。  文件可多选,一起设置。

4.点击项目属性 修改一下选项


预处理器定义HAVE_CONFIG_H _CRT_SECURE_NO_DEPRECATE 这两个



5.在项目的main函数cpp中。

添加头文件#include <winsock2.h>

和 #pragma comment(lib,"ws2_32.lib")


6.好了,可以编译运行了。

7.测试代码:

#include "stdafx.h"
#include <winsock2.h>
#include "event.h"
#include "time.h"
#include "signal.h"
#include "iostream"
	 
#pragma comment(lib,"ws2_32.lib")

void printff(int fd, short what, void *arg)
{
	timeval tv;
	event  *timeEvent = (event *)arg;
	int newtime = (int)time(NULL);

	std::cout<<"时间事件触发"<<std::endl;

	evutil_timerclear(&tv);
	tv.tv_sec = 10;
	raise(SIGBREAK);
	event_add(timeEvent, &tv);
}

int called =0;
void	signal_cb(int fd, short waht, void *arg)
{
	struct event *signal = (event *)arg;

	std::cout<<"信号事件触发"<<std::endl;

	if (called >= 2)
		event_del(signal);

	called++;
}

int _tmain(int argc, _TCHAR* argv[])
{
	event timeout_test;
	event singal_test;
	timeval tv;

	event_init();

	event_set(&timeout_test, -1, 0, printff, &timeout_test);
	event_set(&singal_test, SIGINT, EV_SIGNAL|EV_PERSIST, signal_cb, &singal_test);

	evutil_timerclear(&tv);
	tv.tv_sec = 2;
	event_add(&timeout_test, &tv);
	event_add(&singal_test, NULL);

	event_dispatch();
	return 0;
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值