windows下编译及使用libevent

Windows平台VS2015编译libevent源码 首先需要说的是libevent库依赖openssl和zlib,openssl库又依赖perl和nasm;openssl用于数据信息的安全加密,而zlib库用于数据包的解压缩;zlib最简单无任何依赖,这里我们先编译zlib源码再编译openssl源码,最后编译libevent源码 ......... 阅读详情

原文出自:http://www.cnblogs.com/luxiaoxun/p/3603399.html

Libevent官网:http://libevent.org/

windows 7下编译:

编译环境: windows 7 + VS2010

(1)解压libevent到F:\libevent\libevent-2.0.21-stable

(2)打开Microsoft visual studio 2010命令行工具

(3)修改以下三个文件,添加宏定义:

在以下3个文件开头添加“#define _WIN32_WINNT 0x0500”

libevent-2.0.21-stable\event_iocp.c

libevent-2.0.21-stable\evthread_win32.c

libevent-2.0.21-stable\listener.c

(4)使用VS命令提示工具编译:

cd/d F:\libevent\libevent-2.0.21-stable

nmake /f Makefile.nmake

(5)编译结果:

libevent_core.lib:All core event and buffer functionality. This library contains all the event_base, evbuffer, bufferevent, and utility functions.

libevent_extras.lib:This library defines protocol-specific functionality that you may or may not want for your application, including HTTP, DNS, and RPC.

libevent.lib:This library exists for historical reasons; it contains the contents of both libevent_core and libevent_extra. You shouldn’t use it; it may go away in a future version of Libevent.

(6)VS2010下使用lib

新建一个VC++控制台项目:

环境配置:

项目下建一个Lib目录,将上面三个lib文件copy到该目录下。

新建一个Include目录,将F:\libevent\libevent-2.0.21-stable\include下的文件和文件夹copy到该目录下,F:\libevent\libevent-2.0.21-stable\WIN32-Code下的文件copy到该目录下,2个event2目录下的文件可合并一起。

main代码:

复制代码
// LibeventTest.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"

#include <string.h>
#include <errno.h>
#include <stdio.h>
#include <signal.h>

#ifndef WIN32
#include <netinet/in.h>
# ifdef _XOPEN_SOURCE_EXTENDED
#  include <arpa/inet.h>
# endif
#include <sys/socket.h>
#endif

#include "event2/bufferevent.h"
#include "event2/buffer.h"
#include "event2/listener.h"
#include "event2/util.h"
#include "event2/event.h"

#include <WinSock2.h>

static const char MESSAGE[] = "Hello, World!\n";

static const int PORT = 9995;


static void conn_writecb(struct bufferevent *bev, void *user_data)
{
    struct evbuffer *output = bufferevent_get_output(bev);
    if (evbuffer_get_length(output) == 0) 
    {
        printf("flushed answer\n");
        bufferevent_free(bev);
    }
}

static void conn_eventcb(struct bufferevent *bev, short events, void *user_data)
{
    if (events & BEV_EVENT_EOF) 
    {
        printf("Connection closed.\n");
    } 
    else if (events & BEV_EVENT_ERROR) 
    {
        printf("Got an error on the connection: %s\n",
            strerror(errno));/*XXX win32*/
    }
    /* None of the other events can happen here, since we haven't enabled
     * timeouts */
    bufferevent_free(bev);
}

static void signal_cb(evutil_socket_t sig, short events, void *user_data)
{
    struct event_base *base = (struct event_base *)user_data;
    struct timeval delay = { 2, 0 };

    printf("Caught an interrupt signal; exiting cleanly in two seconds.\n");

    event_base_loopexit(base, &delay);
}

static void listener_cb(struct evconnlistener *listener, evutil_socket_t fd,
    struct sockaddr *sa, int socklen, void *user_data)
{
    struct event_base *base = (struct event_base *)user_data;
    struct bufferevent *bev;

    bev = bufferevent_socket_new(base, fd, BEV_OPT_CLOSE_ON_FREE);
    if (!bev) 
    {
        fprintf(stderr, "Error constructing bufferevent!");
        event_base_loopbreak(base);
        return;
    }
    bufferevent_setcb(bev, NULL, conn_writecb, conn_eventcb, NULL);
    bufferevent_enable(bev, EV_WRITE);
    bufferevent_disable(bev, EV_READ);

    bufferevent_write(bev, MESSAGE, strlen(MESSAGE));
}

int main(int argc, char **argv)
{
    struct event_base *base;
    struct evconnlistener *listener;
    struct event *signal_event;

    struct sockaddr_in sin;

#ifdef WIN32
    WSADATA wsa_data;
    WSAStartup(0x0201, &wsa_data);
#endif

    base = event_base_new();
    if (!base) 
    {
        fprintf(stderr, "Could not initialize libevent!\n");
        return 1;
    }

    memset(&sin, 0, sizeof(sin));
    sin.sin_family = AF_INET;
    sin.sin_port = htons(PORT);

    listener = evconnlistener_new_bind(base, listener_cb, (void *)base,
        LEV_OPT_REUSEABLE|LEV_OPT_CLOSE_ON_FREE, -1,
        (struct sockaddr*)&sin,
        sizeof(sin));

    if (!listener) 
    {
        fprintf(stderr, "Could not create a listener!\n");
        return 1;
    }

    signal_event = evsignal_new(base, SIGINT, signal_cb, (void *)base);

    if (!signal_event || event_add(signal_event, NULL)<0) 
    {
        fprintf(stderr, "Could not create/add a signal event!\n");
        return 1;
    }

    event_base_dispatch(base);

    evconnlistener_free(listener);
    event_free(signal_event);
    event_base_free(base);

    printf("done\n");
    return 0;
}
复制代码

项目属性设置:

VC++目录:

包含目录,添加:F:\Projects\LibeventTest\LibeventTest\Include;

库目录,添加:F:\Projects\LibeventTest\LibeventTest\Lib;

C/C++:

代码生成-->运行库:多线程调试 (/MTd)(Debug下),多线程 (/MT)(Release下)

连接器:

输入:ws2_32.lib;wsock32.lib;libevent.lib;libevent_core.lib;libevent_extras.lib;

ws2_32.lib;wsock32.lib;是用来编译Windows网络相关的程序库。

编译,生成!


Windows10(Win10)下编译libevent 一.  准备工作 去官网下载最新的稳定发布版本libevent-2.1.8-stable.tar.gz 官网地址:http://libevent.org/ 二. 使用VS2012编译 1.解压libevent到C:\Users\admin\Desktop\libevent\libevent-2.1.8-stable 2.打开“VS2010开发人员命令提示”工具,如下图所示。 3.输... 阅读详情

相关推荐

Linux内核支持串口屏,linux串口触摸屏设计总结

Linux serial touch 设计总结概述:最近在做嵌入式linux下串口触摸屏设计,遇到一些问题,经过查找资料和请教同事,总算把问题解决了,事后有把linux相关的内核代码仔细看了一遍,为了有点成果,特别写了个总结。如有任何问题请联系yxj_5421@http://www.doczj.com/doc/87b94b1e227916888486d76d.html,转载请标明出处。系统资源:L...

weixin_39935903的博客 1296

Windows环境下用nmake编译libevent

Windows环境下用nmake编译libevent一、总结1、nmake 命令找不到2、头文件找不到3、lib库找不到4、不知道如何生成“print-winsock-errors.obj” -- 可能出现的错误二、分步1)nmake命令找不到2)头文件找不到3)lib库找不到4)不知道如何生成“print-winsock-errors.obj” 一、总结 1、nmake 命令找不到 将以下路径加入环境变量 PATH C:\Program Files (x86)\Microsoft Visual Studi

k112358的博客 4663

技术文档的语言表达:简洁、准确与易懂的平衡艺术

技术文档的语言表达不仅要简洁、准确,还需要能够打破技术壁垒,使不同背景的读者都能理解。这是一项需要技巧和经验的工作,它要求技术作者既要具备扎实的专业知识,又要具备清晰的表达能力。通过不断打磨语言的简洁性、准确性和易懂性,我们能够创造出一份高质量的技术文档,让知识的传递不再受限于语言的障碍。

人心有反复,好在山水有重逢。 4677

visual studio 2017使用libevent的准备步骤

本人使用的visual studio 2017为community版本,libevent为github上pull下来的最新版本,链接如下:https://github.com/libevent/libevent。 步骤一,编译libevent库 在开始菜单--->所有程序处打开VS 2017的开发人员命令提示符程序,如下图所示 使用cmd命令定位到libevent的目录,输入 ...

不定期更新的博客 2760

芯片硅前验证技术与驱动工程师实战指南

硅前验证是芯片开发流程中的关键环节,通过pre-silicon simulation等技术手段在流片前验证设计正确性。其核心技术包括软件仿真、FPGA原型验证和硬件仿真器解决方案,涉及Linux驱动开发、芯片架构理解和波形分析等核心技能。作为连接芯片设计与系统集成的桥梁,硅前验证能早期发现设计缺陷,节省数百万美元流片成本。以Cadence Palladium为代表的硬件仿真器,通过专用服务器系统实现比纯软件方案快100-1000倍的仿真速度,为驱动工程师提供完整的外设模型验证环境。掌握硅前验证技术可显著提升

weixin_42522857的博客 321

【亲测可用!】阿里达摩院开源实时数字人对话VideoChat本地部署教程(8G显存可跑)

本文主要记录在部署阿里达摩院开源实时数字人对话VideoChat时遇到的问题,希望对各位技术开发或爱好者有所帮助!

波点兔的博客 3890

lbevent CMake编译静态库+VS 2019 +CMake(Window)工程

使用CMake+VS2019编译lbevent的静态链接库,并引入CMake项目。一般选择CMake项目是为了跨平台,而选择在Window系统开发不如直接选择VS进行项目开发。但是,对于却有一定的学习意义。

922

新手网工别慌!手把手带你搞定华为OLT开局配置(从登录到业务下发全流程)

本文为新手网络工程师提供华为OLT设备开局配置的详细指南,涵盖从设备登录、基础配置到业务部署的全流程。通过实战案例和常见问题排查,帮助读者快速掌握华为OLT配置技巧,确保业务顺利开通。

weixin_33721344的博客 481

window下libevent编译及其使用

1.编译选项-MT/MD: 类别 说明 静态连接 多线程(/MT) 多线程Release、DLL版运行时库,只能用于Release版本 LIBCMT.lib 多线程调试(/MTd) 多线程Debug、DLL版运行时库,只能用于Debug版本 LIBCMTD.lib 多线程调试DLL(/MD) ...

算法攻城狮 1688

第12步 支持向量机(SVM)

搭建SVM

Jet4505的博客 1050

瑞芯微RV1109平台GT911触摸屏驱动调试记录1

很明显这里可以看到系统已经配置了i2c-0、i2c-1、i2c-3、i2c-4、i2c-5,当开机的时候系统已经将相应的I2C节点注册成功了,说明I2C部分是没有问题的。

bingdund的博客 297

libevent学习之二:Windows下编译libevent

Linux下编译参考源码中的README文件即可,这里主要记录Windows下的编译。一.准备工作去官网下载最新的稳定发布版本libevent-2.0.22-stable官网地址:http://libevent.org/二.使用VS2012编译1.解压libevent到C:\Users\zhang\Desktop\libevent-2.0.22-stable2.打开“VS2012开发人员命令提示”.........

草上爬的博客 8691

Qt5.14.2开发Mqtt应用程序

然后,你就做不下去了…很明显,大部分博主写的东西不是缺头就是缺尾,带偏了许多读者。,因此我们需要clone的是这个分支版本,而不是这个默认的。然后将编译产物中include里的所有.h文件复制到。下载完后直接默认安装即可,这一步没什么好说的。看到了没,这个才是正确的操作方式,而主线的。信号来判断,自行实现自己的槽函数。然后选择构建方式,这里我选择的是。信号来判断自行实现自己的槽函数。信号来判断自行实现自己的槽函数。源代码,如下图所示,双击打开。收到下行消息时,可以通过连接。

Bruce.yang的嵌入式之旅 2309

windows 编译libevent

windows 10下编译: 编译环境:windows 10 + VS2017 (1)解压libevent到F:\libevent\libevent-2.1.21-stable (2)打开Microsoft visual studio 2017命令行工具 (3)修改以下三个文件,添加宏定义: 在以下3个文件开头添加“#define _WIN32_WINNT 0x0500” libevent-2.1.21-stable\event_iocp.c libevent-2.1.21-stable\e.

weixin_43841155的博客 800

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

windows下编译libevent源码

》讲述了linux下编译libevent源码的方法,本文讲述其在windows平台的编译。

崔杰城的博客 1812

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

centos 编译libevent_windows下编译及使用libevent

Libevent官网:http://libevent.org/windows 7下编译:编译环境:windows 7 + VS2010(1)解压libevent到F:libeventlibevent-2.0.21-stable (请根据你的路径做相关修改)(2)打开Microsoft visual studio 2010命令行工具(3)修改以下三个文件,添加宏定义:(此处不修改编译通过)在以下3个...

weixin_39531229的博客 178

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

Windows下编译libevent及使用

Windows下编译libevent及使用 1、下载地址:http://libevent.org/ ,下载版本:libevent-2.0.22-stable.tar.gz 2、解压, 目录为…\libevent-2.0.22-stable(自己的目录) 3、修改以下三个文件,添加宏定义: 在以下3个文件开头添加“#define _WIN32_WINNT 0x0500” libevent-2.0.2...

NBA_1的博客 615

windows编译libevent

一:先编译zlib源码: 1.http://zlib.net/ 下载zlib1.2.11解压 2.打开vs2017x86_64交叉编译工具 3.输入nmake命令编译 4.编译成功就会在zlib-1.2.11目录中看到如下exe文件 批处理编译脚本 set VS="C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Auxiliary\Build\vcvarsamd64_x86.bat" set OUT=D:\libevent

weixin_43907175的博客 1124

Windows下编译libevent库

本文介绍了使用CMake构建libevent库的配置和安装步骤。首先通过命令指定OpenSSL安装路径(-DOPENSSL_ROOT_DIR)和库安装目录(-DCMAKE_INSTALL_PREFIX)生成构建脚本,然后执行编译命令(cmake --build)完成Release版本的编译和安装。整个流程简明扼要地说明了从配置到安装的关键步骤。

c_w_l的博客 415

windows 10 编译 libevent库

0.编译openssl 如果要完全编译,需要提前编译openssl库。对应的源码: https://github.com/openssl/openssl/archive/master.zip 如果不需要用到加密,可以不用编译openssl。 openssl windows编译安装步骤: 需要工具visual studio, perl 脚本工具 visual studio 自行安装 perel 工具:下载 ActivePerl-5.24.3.2404-MSWin32-x6...

yuanshenqiang的博客 1820

使用cmake在Windows下编译libevent

1、下载安装cmake 2、下载libevent 3、将cmake.exe所在路径添加至PATH环境变量中; 4、进入libevent-master目录,创建build文件夹(md build) 5、进入build,执行“cmake .. -D EVENT__DISABLE_OPENSSL=ON -D EVENT__DISABLE_MBEDTLS=ON -D EVENT__DISABLE_TESTS=ON” (-D选项后面的字段可以从CMakeLists.txt文件中查找) ...

1124
上一篇: HTML5使用Canvas绘图小例
下一篇: Win32修改ListView控件扩展属性
疯狂-的-蜗牛
博客等级 码龄16年 427粉丝 104原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值