欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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

程序员文章站 2022-07-13 21:50:43
...

在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 版本。下载完成之后进行解压。
    在win10的vs2019上安装并编译libevent库

  • 修改 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
    官方说明:务必加上最后一个选项方便调试(我也不懂)
    在win10的vs2019上安装并编译libevent库

  • 修改 libevent 目录下的 Makefile.nmake 文件
    LIBFLAGS=/nologo
    修改为:LIBFLAGS=/nologo /MACHINE:X64
    在win10的vs2019上安装并编译libevent库
    修改完成之后,保存退出。

  • 打开 libevent 目录下的 mm-internal.h 添加 #include <stdint.h>,(在开头加就行)
    在win10的vs2019上安装并编译libevent库

  • 在自己的电脑上找到 x64 Native Tools Command Prompt for VS 2019 ,这个应用程序,(就是vs下的命令提示符)
    在win10的vs2019上安装并编译libevent库

  • 使用控制台命令进入到 libevent 目录下
    在win10的vs2019上安装并编译libevent库

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

  • 成功后,在 libevent 目录下会生成三个文件
    libevent.lib
    libevent_core.lib
    libevent_extras.lib
    在win10的vs2019上安装并编译libevent库
    到这里,libevent 的部分就完成了,接下来是将这个库导入到vs里。

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

  • 依次打开 项目 —> 项目属性(就是项目名+属性,这一步没法截图),
    在win10的vs2019上安装并编译libevent库进入这个界面

  • 配置 选择 所有配置,在 配置属性 下点击 VC++目录,编辑 包含目录库目录
    在win10的vs2019上安装并编译libevent库

  • 包含目录 下添加 libevent 目录下的 include 文件夹和 libevent 目录下 WIN32-Code 目录下的 nmake 文件夹
    在win10的vs2019上安装并编译libevent库

  • 库目录 下添加 libevent 目录
    在win10的vs2019上安装并编译libevent库

  • 最后结果如下
    在win10的vs2019上安装并编译libevent库

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

    libevent.lib
    libevent_core.lib
    libevent_extras.lib

    在win10的vs2019上安装并编译libevent库
    结果如下:
    在win10的vs2019上安装并编译libevent库

  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!”
在win10的vs2019上安装并编译libevent库
到这里配置和测试就完美结束了!!!

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

写在最后

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