关于libevent与vs2022的环境配置以及使用

1.libevent的下载:

       下载官网:libevent;(我下的版本是libevent 2.1.11)

        

2.解压后需要对其中的两个文件( Makefile.nmake和 mm-internal.h )进行修改;

        Makefile.nmake的修改:

                

                将CFLAGS=$(CFLAGS) /Ox /W3 /wd4996 /nologo添加/Zi,结果如上图;

                将LIBFLAGS=/nologo添加一个/MACHINE:X64,结果如上图;

        mm-internal.h的修改:

                

                打开文件后,在文件头加入#include <stdint.h>即可;

                然后搜索自己vs版本对应的命令行

                

        

然后cd /d +下载的libevent文件夹下,执行nmake /f Makefile.nmake

倘若结果不是如图,请检查一遍前面文件的修改是否正确,然后继续执行一遍此命令,之后就会成功,从而在livevent文件夹下产生三个文件:

        libevent.lib

        libevent_extras.lib

        libevent_core.lib

关于libevent的下载就此结束;

3.关于libevent与vs2022的配置:

        首先打开对应项目的属性:

        

在包含目录中添加:(每个人路径都不一样自己找一下)

        1.对应libevent文件夹+\WIN32-Code\nmake

        2.对应libevent文件夹+\include

在库目录中添加:

        1.对应libevent文件夹;

最后添加附加依赖项中添加开始生产的三个lib文件:

        libevent.lib

        libevent_extras.lib

        libevent_core.lib

        

将这些设置应用之后即可编写代码了;

下面是试用示例,启动后会一直循环打印welcome use libvent;

#include "event.h"
#include <iostream>
#include <winsock.h>
#pragma comment(lib,"ws2_32.lib")
struct event_base* base;
void OnTime(intptr_t sock, short event_value, void* arg) {
	std::cout << "welcome use libvent\n";
	timeval tv;
	tv.tv_sec = 1;
	tv.tv_usec = 0;
	event_add((struct event*)arg, &tv);
	//event_base_loopbreak(base); // (倘若只想此事件执行一次,将本行代码注释取消即可)通知 libevent 停止事件循环
}
int main() {
	WSADATA wsaData;
	if (WSAStartup(MAKEWORD(2, 2), &wsaData) != 0) {
		return -1;
	}
	base = event_init();//初始化libevent
	struct event ev_time;//事件变量
	evtimer_set(&ev_time, OnTime, &ev_time);//设置ev_time事件为定时事件,并将OnTime作为会回调函数
	//用于指定事件发生的时间间隔为1
	struct timeval tv;
	tv.tv_sec = 1;//秒
	tv.tv_usec = 0;//微秒
	event_add(&ev_time, &tv);//将ev_time对象添加到libevent的事件处理器中,并设置事件发生的时间间隔为1秒
	event_dispatch();//启动事件循环后就会一直处于查询事件处理器中是否有事件
	WSACleanup();
	return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值