-
2021-04-24 18:37:53
1、下载并安装 ActivePerl。
下载地址:perl下载
测试安装是否成功:
切换到安装目录下eg目录,执行perl example.pl,输出Hello from ActivePerl!
2、下载并安装 Nasm 汇编器,并将 安装路径添加到系统环境变量 Path 中。
下载地址:nasm下载3、初始化编译环境(管理员权限,防止openssl安装失败)
切换到VS安装路径,默认是C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin(64位在对应目录下执行vcvars64.bat)
执行vcvars32.bat
4、下载并编译OpenSSL ,切换到解压目录(不区分debug、release)
下载地址:openssl
4.1、输入perl Configure VC-WIN32(64:VC-WIN64A) --prefix=存放路径
4.2、编译OpenSSL:执行nmake -f makefile
4.3、编译结果测试:执行nmake test,所有测试执行成功
4.4、安装:执行nmake -f makefile install(默认安装在C盘OpenSSL下)5、下载并编译libevent
下载地址:libevent源代码下载
5.1、切换到源代码路径
5.2、生成vs项目:cmake ../ -DEVENT__DISABLE_MBEDTLS
5.3、VS打开生成的项目,编译生成库更多相关内容 -
windows编译libevent
2022-02-03 17:41:38一:先编译zlib源码: ...下载zlib1.2.11解压 2.打开vs2017x86_64交叉编译工具 3.输入nmake命令编译 4.编译成功就会在zlib-1.2.11目录中看到如下exe文件 批处理编译脚本 set VS="C:\Program Files...set OUT=D:\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\out\vs2017-32\zlib call %VS% cd zlib-1.2.11 nmake /f win32\Makefile.msc clean nmake /f win32\Makefile.msc md %OUT%\lib md %OUT%\bin md %OUT%\include copy /Y *.lib %OUT%\lib copy /Y *.h %OUT%\include copy /Y *.dll %OUT%\bin copy /Y *.exe %OUT%\bin pause
二:编译openssl
1.在nasm压缩包解压后,将nasm解压文件夹放入环境变量中。
2.安装perl,安装成功后,环境变量中可以看到perl
3.编译openssl
4.有个编译错误需要手动拷贝一下
或者以管理员身份运行交叉命令提示符,然后nmake install@echo "开始编译openssl" set VS="C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Auxiliary\Build\vcvarsamd64_x86.bat" set OUT=D:\libevent\out\vs2017-32\openssl call %VS% D: cd D:\libevent\openssl-1.1.1 perl Configure VC-WIN32 --perfix=%OUT% nmake clean nmake nmake install @echo "编译openssl结束" pause
三:libevent编译
1.下载libevent-master源码
2.编译源码
3.更改test下的Makefile.nmake文件
-
libevent windows编译
2018-07-17 14:44:042.打开vs命令行工具进入libevent-2.1.8-stable目录下执行nmake ./Makefile.nmake 只要三个libevent.lib,libevent_core.lib,libevent_extras.lib编译出来即可 下面的命令也可 全量编译:nmake /f Makefile.nmake ...1.官网下载http://libevent.org/最新源码
2.打开vs命令行工具进入libevent-2.1.8-stable目录下执行nmake ./Makefile.nmake 只要三个libevent.lib,libevent_core.lib,libevent_extras.lib编译出来即可
下面的命令也可
全量编译:nmake /f Makefile.nmake [all] //all可以省略,默认是all
库编译: nmake /f Makefile.nmake static_libs
测试编译:nmake /f Makefile.nmake tests
清理输出:nmake /f Makefile.nmake clean
3.添加静态lib库和include头文件,头文件要把WIN32-Code下的event-config.h包含进去即可。
服务端源码:
#include <stdio.h>
#include <time.h>
#include <event2/bufferevent.h>
#include <event2/buffer.h>
#include <event2/listener.h>
#include <event2/util.h>
#include <event2/event.h>
#pragma comment(lib,"ws2_32.lib")
const int PORT = 2500;
const int BUFFER_SIZE = 1024;void listener_cb(struct evconnlistener *, evutil_socket_t,
struct sockaddr *, int socklen, void *);
void conn_writecb(struct bufferevent *, void *);
void conn_readcb(struct bufferevent *, void *);
void conn_eventcb(struct bufferevent *, short, void *);
void delay(int ms);int main(int argc, char **argv)
{
printf("I am server\n");
#ifdef WIN32
WSAData wsaData;
WSAStartup(MAKEWORD(2, 0), &wsaData);
#endif
struct sockaddr_in sin;
memset(&sin, 0, sizeof(sin));
sin.sin_family = AF_INET;
sin.sin_port = htons(PORT);struct evconnlistener *listener;
struct event_base *base = event_base_new();
if (!base)
{
printf("Could not initialize libevent\n");
return 1;
}
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)
{
printf("Could not create a listener\n");
return 1;
}event_base_dispatch(base);
evconnlistener_free(listener);
event_base_free(base);printf("done\n");
return 0;
}void listener_cb(struct evconnlistener *listener, evutil_socket_t fd,
struct sockaddr *sa, int socklen, void *user_data)
{
printf("Detect an connection\n");
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)
{
printf("Could not create a bufferevent\n");
event_base_loopbreak(base);
return;
}
bufferevent_setcb(bev, conn_readcb, conn_writecb, conn_eventcb, NULL);
bufferevent_enable(bev, EV_READ | EV_WRITE);
//服务器监听到连接时,给客户端发送第一条消息
char *reply_msg = "I receive a message from server";
bufferevent_write(bev, reply_msg, strlen(reply_msg));
}//conn_writecwritecb函数将在bufferevent中的output evbuffer缓冲区发送完成后被调用。
//此时evbuffer_get_length(output) = 0,说明output evbuffer缓冲区被清空。
//假设发现有10000条记录要发送出去,1次发送10000条将占用大量内存,所以,我们要分批发送
//先发送100条数据,假设每条数据为1024字节bufferevent_write(bev,buf,1024 *100);
//系统在这100条记录发送完成后将调用conn_writecbb回调函数,然后在该函数中循环发送剩下的
//数据
void conn_writecb(struct bufferevent *bev, void *user_data)
{
// struct evbuffer *output = bufferevent_get_output(bev);
// if (evbuffer_get_length(output) == 0)
// {
// printf("Output evbuffer is flushed\n");
// bufferevent_free(bev);
// }
//delay 1 second
delay(1000);
static int msg_num = 1;
char reply_msg[1000] = { '\0' };
char *str = "I receive a message from server ";
memcpy(reply_msg, str, strlen(str));
sprintf(reply_msg + strlen(str), "%d", msg_num);
bufferevent_write(bev, reply_msg, strlen(reply_msg));
msg_num++;
}void conn_readcb(struct bufferevent *bev, void *user_data)
{
struct evbuffer *input = bufferevent_get_input(bev);
size_t sz = evbuffer_get_length(input);
if (sz > 0)
{
char msg[BUFFER_SIZE] = { '\0' };
bufferevent_read(bev, msg, sz);
printf("%s\n", msg);
}
}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));
}bufferevent_free(bev);
}void delay(int ms)
{
clock_t start = clock();
while (clock() - start < ms);
}客户端找个网络调试工具进行连接即可
-
libevent-2.1.12-stable openssl1.1.1f 在windows环境下使用mingw编译
2020-09-18 14:45:42libevent-2.1.12-stable openssl1.1.1f 在windows环境下使用mingw编译 包含libevent 下的lib、include、bin和openssl的lib、include、bin 自己项目使用 -
window下libevent编译及其使用
2022-02-16 21:40:181.编译选项-MT/MD: 类别 说明 静态连接 多线程(/MT) 多线程Release、DLL版运行时库,只能用于Release版本 LIBCMT.lib 多线程调试(/MTd) ...1.编译选项-MT/MD:
类别
说明
静态连接
多线程(/MT)
多线程Release、DLL版运行时库 ,只能用于Release版本
LIBCMT.lib
多线程调试(/MTd)
多线程Debug、DLL版运行时库 ,只能用于Debug版本
LIBCMTD.lib
多线程调试DLL(/MD)
多线程Release、静态版运行时库 ,只能用于Release版本
MSVCRT.lib
多线程调试DLL(/MDd)
多线程Debug、静态版本运行时库 ,只能用于Debug版本
MSVCRTD.lib
2.Window下动态连接和静态连接:
类别
后缀
说明
动态链接库
DLL
包含若干个函数的库文件
静态链接库
静态lib
包含函数代码声明和实现,编译后所有代码都嵌入到宿主程序中。
动态lib
相当于.h头文件,是对实现部分(.DLL)的导出部分的声明
3.libevent编译流程(使用vs2019):
步骤1:下载源码:http://libevent.org/,选择libevent-2.01.10-stable2.1.10版本,并解压
步骤2:打开x86 Native Tools Command Prompt for VS 2019,并切换到libevent-2.01.10-stable目录下
步骤3:运行nmake /f Makefile.nmake,编译结束,将libevent-2.01.10-stable目录下产生3个lib文件
步骤4:
1.项目下新建Lib目录,将三个lib文件copy到该目录下。
2.项目下新建Include目录,将libevent-2.01.10-stable\include下的文件和文件夹copy到该目录下,libevent-2.0.21-stable\WIN32-Code下的文件copy到该目录下,2个event2目录下的文件可合并一起
步骤5:VS开发环境设置
项目属性设置:
1.VC++目录:
包含目录,添加:F:\Projects\LibeventTest\LibeventTest\Include;
库目录,添加:F:\Projects\LibeventTest\LibeventTest\Lib;
2.C/C++:
代码生成-->运行库:多线程调试 (/MTd)(Debug下),多线程 (/MT)(Release下)
3.连接器:
输入:ws2_32.lib;wsock32.lib;libevent.lib;libevent_core.lib;libevent_extras.lib;
ws2_32.lib;wsock32.lib;编译Windows网络相关程序库。
注意事项:
- libevent默认编译是release版本x86库
- 如果需要编译debug版本的,修改一下makefile.nmake:
#CFLAGS=$(CFLAGS) /Ox /W3 /wd4996 /nologo
修改为:
#CFLAGS=$(CFLAGS) /D_DEBUG /Od /W3 /wd4996 /nologo - 如果编译成64位,添加一个LIBFLAGS选项 /MACHINE:X64,编译终端变为x64 Native Tools Command Prompt for VS 2019
参考:
-
windows下编译libevent
2018-06-21 18:49:12下载libevent-2.1.8-stable.tar.gz,解压到e:\libevent-2.1.8-stable,然后在以下3个文件开头添加一行#define _WIN32_WINNT 0x0500 event_iocp.c evthread_win32.c listener.c 打开VS命令行工具C:\Program Files... -
windows 编译libevent
2021-09-24 16:38:43windows 10下编译: 编译环境:windows 10 + VS2017 (1)解压libevent到F:\libevent\libevent-2.1.21-stable (2)打开Microsoft visual studio 2017命令行工具 (3)修改以下三个文件,添加宏定义: 在以下3... -
libevent windows 编译
2013-07-09 09:23:06[文章作者:张宴 本文版本:v1.0 最后修改... 本文介绍了如何在 Windows 操作系统中,利用微软 Visual Studio 2005 编译生成 Libevent 2.0.10 静态链接库,并利用 Libevent 静态链接库,实现一个简单的 HTTP -
windows CMake方式 编译 libevent 记录
2022-01-25 10:01:50libevent git地址 下下来之后解压 按照官方文档提示 还要windows 10 没有cmake 去cmake官方 CMake Download | CMake 下载cmake 直接下载的安装包 安装之后 需要根据自己的VS版本选择 我的是2022 具体版本 ... -
libevent在windows下用visual studio编译时出现error C2894错误的原因与解决方法
2021-08-25 11:03:12libevent在windows下用visual studio编译时出现error C2894错误的原因与解决方法 -
libevent-2.0.22-stable在windows编译好的
2018-02-02 16:04:53在windows环境编译好的库,可以直接拷贝来用 1、拷贝include下面的所有文件到你所在工程下面。 2、拷贝libevent.lib libevent_extras.lib libevent_core.lib到你所在的库。 -
libevent-windows VS2019-cmake 编译笔记
2022-03-16 11:23:01cmake libevent 编译 windows 开源软件编译bug解决 -
windows下编译libevent(2.1.8)及使用
2018-11-14 14:54:53一:获取libevent ...二:编译libevent 我是用的visual studio 2010,当然也可以使用更高的版本 启动后,进入"Libevent-release-2.1.8-stable"所在的目录 直接执行会报如下错误: 按照提示... -
关于libevent在windows进行x64的编译,留作一个简单的记录
2020-10-23 23:17:27软件版本 :libevent-2.1.11-stable.tar.gz libevent目录下: Makefile.nmake LIBFLAGS=/nologo 此行修改成 LIBFLAGS=/nologo /MACHINE:X64 buffer.c #define EVBUFFER_MAX_READ 4096 修改成 ,此处修改... -
libevent在windows下使用步骤详解及使用libevent编译失败的解决方案(转)
2018-06-28 17:24:31转自:https://blog.csdn.net/xufeng0991/article/details/44134005libevent是一个常用的网络库,下面就看看在windows下面编译测试的过程吧。一 环境系统:win8.1编译器:VS2013官方下载地址:http://libevent.org/... -
编译libevent遇到编译错误
2019-10-08 16:04:36e:\github\libevent-2.1.11-stable\minheap-internal.h(76) : error C2065: “UINT32_MAX”: 未声明的标识符 在该文件中添加#include “stdint.h” -
Windows下编译libevent 64位静态库总结
2018-02-02 17:25:59libevent默认编译为32位lib,若需要编译为64位,则需修改Makefile.nmake文件,在LIBFLAGS处添加 MACHINE:X64(LIBFLAGS=/nologo/MACHINE:X64 )。 4.使用 nmake /f Makefile.nmake编译过程中可能出错及修改... -
libevent学习之二:Windows下编译libevent
2016-10-17 14:42:19Linux下编译参考源码中的README文件即可,这里主要记录Windows下的编译。一.准备工作去官网下载最新的稳定发布版本libevent-2.0.22-stable官网地址:http://libevent.org/二.使用VS2012编译1.解压libevent到C:\Users... -
windows 10 编译 libevent库
2021-10-28 16:51:440.编译openssl 如果要完全编译,需要提前编译openssl...openssl windows编译安装步骤: 需要工具visual studio, perl 脚本工具 visual studio 自行安装 perel 工具:下载 ActivePerl-5.24.3.2404-MSWin32-x6... -
windows下编译及使用libevent
2020-12-22 12:08:36Libevent官网:http://libevent.org/windows 7下编译:编译环境:windows 7 + VS2010(1)解压libevent到F:libeventlibevent-2.0.21-stable (请根据你的路径做相关修改)(2)打开Microsoft visual studio 2010命令行工具... -
windows编译libevent出现“uint32_max”未声明的标识符。
2022-04-08 16:34:21爪机打的,直接看图 解决方式也很简单,见招拆招 在libevent目录下的“minheap-internal.h”里面加一句 “#include<stdint.h>” 完! -
windows下用cmake静态编译编译libevent-2.1.12,同时开启支持openssl
2020-10-04 18:36:03之前一直用的是libevent 2.1.4的版本,今天想把libevent的版本更新一下,于是下了一个最新的libevent-...libevent使用cmake编译,下一个windows的cmake,然后打开,如下图 首先,要静态编译,EVENT_LIBRARY_TY -
Windows 编译libevent库
2017-08-15 23:16:03先去github上 git glone https://github.com/libevent/libevent打开后 输入 nmake /f Makefile.nmake然后得到三个lib: 在vs2015中项目属性中添加附加目录:在打开链接器中的输入 看见...到这一步就完成安装 Windows li -
PC端openssl和libevent的编译流程
2021-04-27 16:19:35准备工作: 1、Perl 建议使用5.30以上版本,本人在使用时发现28的版本好像在配置openssl的时候有问题。...安装后打开vs编译环境(我编译的是vs2010) 验证perl和nasm是否安装成功 编译openssl 进入openssl-1.0.2j目录 -
Windows下编译libevent
2018-03-18 17:25:36用cmake在windows下编译libevent很简单,但是Github上通过release下载的没有包含cmake脚本GitHub地址:https://github.com/libevent/libevent/releases1.在GitHub上下载源码,我方才下载的是libevent-2.1.8-... -
libevent 在windows下的编译过程
2017-07-03 14:13:12转载至:http://blog.csdn.net/fuyuehua22/article/details/38014345 转载至:... Libevent官网:http://libevent.org/ ...windows 7下编译: ...编译环境: windows 7 + VS2 -
Windows下编译Libevent
2019-10-07 00:07:50编译环境:VS2013+Win10 1 下载得到libevent-2.0.22-stable.tar,解压。 2 打开“VS2013开发人员命令提示”工具。 3 命令提示工具中,进入到你的解压目录,运行 nmake /f Makefile.nmake 4 成功后,libevent-2.0... -
Windows下实现简单的libevent服务器
2020-09-30 12:30:35主要介绍了Windows下实现简单的libevent服务器的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下