前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Windows Visual Studio 使用 libevent 库

Windows Visual Studio 使用 libevent 库

作者头像
我与梦想有个约会
发布2023-10-21 14:12:03
3380
发布2023-10-21 14:12:03
举报
文章被收录于专栏:jiajia_deng

这几天在看 libevent 的官方书籍跟着学习,开着个 Ubuntu 的虚拟机在 Windows 下来回切换,学习效率实在低下,且不说编译、测试这些复杂的步骤。所以决定研究一下如何在 Windows Visual Studio 环境下使用 libevent 库,这样学习效率会高很多。从网上借鉴了一些教程,都写的比较粗糙,我也是搞了好一会才搞定,所以自己记录一下。

下载 libevent

官网地址:http://libevent.org/ 直接下载最新版本即可:

编译 libevent 库

首先将下载好的 libevent-2.0.22-stable.tar.gz 解压出来,然后打开开始菜单,找到 Visual Studio Tools 打开。

2016-03-24_121403
2016-03-24_121403

打开后点击里面的 VS2013 开发人员命令提示 工具。

2016-03-24_121507
2016-03-24_121507

随后 cd 到你刚刚解压的 libevent-2.0.22-stable 目录下。

2016-03-24_121724
2016-03-24_121724

最后执行命令 nmake /f Makefile.nmake 编译 libevent。

与 Visual Studio 结合

上面 libevent 编译完成后,会在解压的 libevent-2.0.22-stable 目录下生成三个 .lib 的文件,分别是 libevent.lib libevent_core.lib libevent_extras.lib。把他们拷贝出来待用。

使用 Visual Studio 建立一个 Win32 控制台空项目,建立完成后首先在项目目录下新建两个文件夹,lib 和 inc,用来存放 .lib 库文件和 .h 头文件(熟悉的人目录结构你可以自己规划,我这样写只为新手入门准备,可以参考学习,后面熟悉了随便自己怎么改)。

随后,拷贝解压出来的 libevent-2.0.22-stable\include 所有文件,到 inc 目录,再拷贝 libevent-2.0.22-stable\WIN32-Code 目录下所有文件同样到 inc 目录,此时会出现重名目录的情况,直接覆盖就可以了,实际里面的文件不会重复。

然后拷贝编译好的三个 .lib 文件到 lib 目录下。

需要的文件我们都放到项目目录下了,接下来就是在项目中引入这两个目录。在项目上 右键-属性

点击 VC++目录,分别在包含目录中引入项目目录下的 inc 文件夹、在库目录中引入 lib 文件夹。

C/C++-代码生成 中,将 运行库 在 Debug 模式下修改为 多线程调试 (/MTd),在 Release 模式下修改为 多线程调试 (/MT)

链接器-输入附加依赖库 中分别添加三个 lib 文件和 socket 所需的库文件。

以上环境我们就搭建好了,接下来就是下一段代码来测试一下了。在项目中新建一个 mian.c 文件,输入一下代码编译并运行。

代码语言:javascript
复制
#include <stdio.h>

#include <WinSock2.h>      // windows socket

#include <event2/event.h>  // libevent core

int main(int argc, char* argv[])
{
    WSADATA wsa_data;
    WSAStartup(MAKEWORD(2, 2), &wsa_data);

    // init libevent
    struct event_base* base = event_base_new();
    if (!base)
    {
        puts("Couldn't get an event_base!");
    }
    else
    {
        // 获取当前使用了哪种 I/O 模型,Windows 下仅显示 win32
        printf("Using Libevent with backend method <%s>.\n",
            event_base_get_method(base));
    }

    WSACleanup();
    event_base_free(base);
    return 0;
}

如果你得到如下返回,那么证明你环境已经可以正常使用拉。接下来去摸索 libevent 的精髓吧。

代码语言:javascript
复制
Using Libevent with backend method <win32>.
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2016-03-24,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 下载 libevent
  • 编译 libevent 库
  • 与 Visual Studio 结合
相关产品与服务
腾讯云服务器利旧
云服务器(Cloud Virtual Machine,CVM)提供安全可靠的弹性计算服务。 您可以实时扩展或缩减计算资源,适应变化的业务需求,并只需按实际使用的资源计费。使用 CVM 可以极大降低您的软硬件采购成本,简化 IT 运维工作。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档