在win10的vs2019上安装并编译libevent库

在win10的vs2019上安装并编译libevent库

写在前面

菜鸡的我第一次接触 libevent 库,对他一点也不了解,只想先搞一个最简单的程序能跑起来就行。为此搜了无数个教程,但都会在使用 nmake 编译的那一步down掉。不过最后在我无数次的尝试下,终于弄好了。

编译环境:

1、win10 64位
2、vs2019中文版(vs命令提示符的名字是英文)
3、libevent 2.1.11
4、libevent解压的文件夹目录为:“D:\software\libevent-2.1.11-stable”(这个因人而异,可以改)

借鉴了两个大神的博客:这个博客借鉴前8步这个博客借鉴步骤二和步骤三,非常感谢这两个大神。

  • 点击前往官网下载,进去之后很容易就找到, 我下载的是 libevent-2.1.11-stable 版本。下载完成之后进行解压。
    在这里插入图片描述

  • 修改 libevent 目录下的 Makefile.nmake 文件:(libevent目录指的就是刚刚解压的那个目录(我的是:“D:\software\libevent-2.1.11-stable”),可以找一个格式的地方,放进去)
    找到 CFLAGS=$(CFLAGS) /Ox /W3 /wd4996 /nologo,再后面加上 /Zi
    CFLAGS=$(CFLAGS) /Ox /W3 /wd4996 /nologo /Zi
    官方说明:务必加上最后一个选项方便调试(我也不懂)

  • 修改 libevent 目录下的 Makefile.nmake 文件
    LIBFLAGS=/nologo
    修改为:LIBFLAGS=/nologo /MACHINE:X64
    在这里插入图片描述
    修改完成之后,保存退出。

  • 打开 libevent 目录下的 mm-internal.h 添加 #include <stdint.h>,(在开头加就行)
    在这里插入图片描述

  • 在自己的电脑上找到 x64 Native Tools Command Prompt for VS 2019 ,这个应用程序,(就是vs下的命令提示符)
    在这里插入图片描述

  • 使用控制台命令进入到 libevent 目录下
    在这里插入图片描述

  • 执行命令 nmake /f Makefile.nmake,(成功的时候只有几行输出,要是碰见输出很多行,说什么变量转换可能导致数据丢失这些话,都说明编译失败,就算是真的生成了三个 lib 文件,也是失败的。得重新找别的教程,教程有很多,基本路线都差不多,但是具体内容的差别还是很大的。如果这里不行就请绕道。手动狗头)
    在这里插入图片描述这是成功的截图(只有几行提示), 失败的图没有截,因为当时烦的要死。

  • 成功后,在 libevent 目录下会生成三个文件
    libevent.lib
    libevent_core.lib
    libevent_extras.lib
    在这里插入图片描述
    到这里,libevent 的部分就完成了,接下来是将这个库导入到vs里。

  • 在 vs 里新建项目,这步没什么要求。

  • 依次打开 项目 —> 项目属性(就是项目名+属性,这一步没法截图),
    在这里插入图片描述进入这个界面

  • 配置 选择 所有配置,在 配置属性 下点击 VC++目录,编辑 包含目录库目录
    在这里插入图片描述

  • 包含目录 下添加 libevent 目录下的 include 文件夹和 libevent 目录下 WIN32-Code 目录下的 nmake 文件夹
    在这里插入图片描述

  • 库目录 下添加 libevent 目录
    在这里插入图片描述

  • 最后结果如下
    在这里插入图片描述

  1. 依次选择 配置属性 —> 链接器 —> 输入 —> 附加依赖项 ,添加如下 lib 文件:

    libevent.lib
    libevent_core.lib
    libevent_extras.lib

    在这里插入图片描述
    结果如下:
    在这里插入图片描述

  2. 点击 确定 完成所有配置。

  3. 使用一个非常简单的代码测试一下是否成功

/************************************
* 每隔两秒在控制台输出"Hello World!"
*************************************/
#include "event.h"
#include <iostream>
#include <winsock.h>
#pragma comment(lib,"ws2_32.lib")
void OnTime(int sock, short event_value, void* arg){
	std::cout << "Hello World!\n";
	timeval tv;
	tv.tv_sec = 1;
	tv.tv_usec = 0;
	event_add((struct event*)arg, &tv);
}
int main(){
	WSADATA wsaData;
	if (WSAStartup(MAKEWORD(1, 1), &wsaData) != 0)	{
		return -1;
	}
	event_init();
	struct event ev_time;
	evtimer_set(&ev_time, OnTime, &ev_time);
	struct timeval tv;
	tv.tv_sec = 1;
	tv.tv_usec = 0;
	event_add(&ev_time, &tv);
	event_dispatch();
	WSACleanup();
	return 0;
}

如果成功的话,控制台就会每隔两秒输出一个 “Hello World!”
在这里插入图片描述
到这里配置和测试就完美结束了!!!

如何区别 C++代码是 linux 端还是 windows 端?
答:看头文件
如果是 #include <winsock.h> 的就是 windows 端;
如果是 #include<sys/socket.h> 的就是 linux 端。

写在最后

之前一直拿着 linux 端的代码在 win10 上运行, 我说怎么有的代码成功了,有的就报错。真的是太蠢了。
下一篇(如果有的话)会介绍两个客户端和一个服务器端的相关代码
最后非常感谢那两个大神的博客。


分界线:
如果编译不成功可以去找一下已经编译过的那三个lib文件,然后继续按着教程来,好像也是可以的。

链接:https://pan.baidu.com/s/1hkM7rBDXRckDl50mRy9HGA
提取码:w4xl

  • 5
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 10
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值