精华内容
下载资源
问答
  • vs编译libevent 可调试

    2015-11-19 20:52:32
    vs2008编译libevent项目,根据源代码中makefile.nmake创建,用于调试 libevent版本:libevent-2.0.22
  • VS2015 编译libevent

    千次阅读 2020-04-23 15:39:11
    文章目录下载 Libevent编译 Libevent 库Visual Studio配置Libevent使用 Libevent参考链接 下载 Libevent 官网地址:http://libevent.org/ 编译 Libevent 库 1 解压libevent-2.1.11-stable.tar.gz 2 打开开始菜单,...

    下载 Libevent

    官网地址:http://libevent.org/
    在这里插入图片描述

    编译 Libevent 库

    1 解压libevent-2.1.11-stable.tar.gz
    2 打开开始菜单,找到Vistual Studio 本机工具命令提示符(64位使用x64,32位使用x86)
    在这里插入图片描述

    3 cd进入解压后的ibevent-2.1.11-stable目录下
    在这里插入图片描述

    4 执行命令: nmake /f Makefile.nmake

    在这里插入图片描述

    如果报错:f:\lib\libevent-2.1.11-stable\minheap-internal.h(73): error C2065: “UINT32_MAX”: 未声明的标识符
    在该文件(minheap-internal.h)中添加 #include “stdint.h”,再次编译,会有警告,没关系。

    在这里插入图片描述
    在这里插入图片描述

    Visual Studio配置Libevent

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

    在这里插入图片描述

    使用 Visual Studio 建立一个 Win32 控制台空项目,建立完成后首先在项目目录下新建一个DEPS文件夹,DEPS下建include和lib文件夹,用来存放 .h 头文件和 .lib 库文件(熟悉的人目录结构你可以自己规划,我这样写只为新手入门准备,可以参考学习,后面熟悉了随便自己怎么改)。
    在这里插入图片描述
      
    随后,拷贝libevent-2.1.11-stable\includelibevent-2.1.11-stable\WIN32-Code\nmake所有文件,到 include 目录,此时会出现重名目录的情况,直接覆盖就可以了,实际里面的文件不会重复。
    备注:是复制libevent-2.1.11-stable\WIN32-Code\nmake中的文件和目录而不是在libevent-2.1.11-stable\WIN32-Code中,这点非常重要,很多文章都是说的复制后者。

    在这里插入图片描述

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

    在这里插入图片描述

    需要的文件我们都放到项目目录下了,接下来就是在项目中引入这两个目录。在项目上 右键-属性。
    点击 VC++目录,分别在包含目录中引入项目目录下的 include 文件夹、在库目录中引入 lib 文件夹。
    备注:最好是在附加包含目录、附加库目录中加入目录,包含目录与附加包含目录、库目录与附件库目录的区别见VS2015 包含目录、库目录、附加包含目录、附加库目录、附加依赖项之详解

    在这里插入图片描述

    在这里插入图片描述

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

    在这里插入图片描述

    链接器-输入-附加依赖库中分别添加三个lib文件(libevent.lib、libevent_core.lib、libevent_extras.lib)和 socket 所需的库文件(ws2_32.lib、wsock32.lib)。

    相应的打开路径如下:

    • 附加包含目录:配置属性-》C/C++ -》常规 -》附加包含目录
    • 附加库目录:配置属性-》链接器 -》常规 -》附加库目录
    • 附加依赖项:配置属性-》链接器 -》输入 -》附加依赖项

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

    使用 Libevent

    采用 bufferevent 实现多线程架构,使用 libevent 网络库实现了一个游戏服务器引擎,在此记录下其中遇到的一个问题。

    我在设计服务器上选择把逻辑和网络分线程,线程之间通信使用队列。但是这样做会有个问题,当逻辑线程想要主动的发一个数据包的时候,网络线程此时可能还阻塞在等待网络 IO 的系统调用上(比如说 epol l)。如果不做特殊处理的话,此时消息包就会一直积压在缓冲区中,直到下一次网络线程从挂起的系统调用返回(比如来了一个消息包)。因此,当逻辑线程发送消息包的时候(bufferevent_write)需要一种唤醒机制,让网络线程从 epoll 等系统调用中返回并处理发送消息包逻辑。

    libevent 相关的 api 很简单并且只有一个:evthread_use_windows_threads() 。
    函数 evthread_use_windows_threads() 的调用必须在初始化 event_base 之前。在此之后,无需再做别的事情,逻辑线程在执行 bufferevent_write 的时候,libevent 就会自动唤醒网络线程的事件循环,并执行发送数据。

    #ifdef WIN32
    	evthread_use_windows_threads();
    #endif
    #ifdef _EVENT_HAVE_PTHREADS
    	evthread_use_pthreads();
    #endif
    	struct event_base* base = event_base_new();
    

    参考链接

    Windows Visual Studio 使用 libevent 库
    记一个多线程使用libevent的问题

    展开全文
  • VS2015编译libevent

    2021-03-07 22:57:43
    libevent编译主要依赖有以下几个库: zlib openssl 同时编译所需的工具有: perl :生成对应makefile nasm :perl需要用到 编译使用版本:openssl-1.1.1,zlib-1.2.11,libevent-master。 2.编译zlib zlib的...

    1.编译依赖

    libevent的编译主要依赖有以下几个库:

    • zlib
    • openssl

    同时编译所需的工具有:

    • perl :生成对应makefile
    • nasm :perl需要用到
      编译使用版本:openssl-1.1.1,zlib-1.2.11,libevent-master。

    2.编译zlib

    zlib的编译较为简单,本文采用VS自带的nmake进行编译。

    1. 首先打开cmd,执行VS的安装目录下的vcvarsall.bat脚本,会设置一些编译使用的环境变量,如nmake。
    2. 进入zlib的源码目录,执行 nmake /f win32\Makefile.msc
      在这里插入图片描述
      可以写一个windows下的批处理文件用于自动构建编译zlib。
    set VS="E:\VS2015\VC\vcvarsall.bat"
    set OUT=D:\libevent\out\vs2015_32\zlib
    call %VS%
    D:
    cd D:\libevent\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 *.h %out%\include
    copy /Y *.lib %out%\lib
    copy /Y *.dll %out%\bin
    copy /Y *.exe %out%\bin
    

    3.编译openssl

    安装perl和nasm,perl直接下一步即可安装,nasm解压出来,将即可。

    1. 以管理员身份打开cmd,进入openssl源码目录,执行VS的安装目录下的vcvarsall.bat脚本。
    2. 执行Configure VC-WIN32 --prefix=./out #./out 为安装目录,此步骤会生成makefile
    3. 执行nmake进行编译
    4. 执行nmake install 将编译好的文件拷贝到–prefix指定的out目录下。
      编写windows批处理脚本build_openssl_vs2015_32.bat,进行自动编译如下
    @echo "start build openssl"
    set VS="E:\VS2015\VC\vcvarsall.bat"
    set OUT=D:\libevent\out\vs2015_32\openssl
    call %VS%
    D:
    cd D:\libevent\openssl-1.1.1
    perl Configure VC-WIN32 --prefix=%OUT%
    nmake
    nmake install
    @echo "build openssl sussess"
    pause
    
    

    4.编译libevent

    libevent的编译步骤如下:

    1. 以管理员身份打开cmd,进入libevent源码目录,执行VS的安装目录下的vcvarsall.bat脚本。
    2. 执行 nmake /f Makefile.nmake OPENSSL_DIR=D:\libevent\out\vs2015_32\openssl 进行编译,其中OPENSSL_DIR表示指定openssl编译生成的目录。
      这一步会出一下错误:在这里插入图片描述
      测试程序编译出错。
      原因:openssl的版本不一致,编译出来的库的名字跟libevent中Makefile指定的库名不一致。
      解决方案:修改libevent-master\test\Makefile.nmake。
      将SSL_LIBS=…\libevent_openssl.lib $(OPENSSL_DIR)\lib\libeay32.lib $(OPENSSL_DIR)\lib\ssleay32.lib gdi32.lib User32.lib
      改成
      SSL_LIBS=…\libevent_openssl.lib $(OPENSSL_DIR)\lib\libssl.lib $(OPENSSL_DIR)\lib\libcrypto.lib gdi32.lib User32.lib即可
      编译成功。
      写成windows批处理文件如下:
    @echo "start build openssl"
    set VS="E:\VS2015\VC\vcvarsall.bat"
    set OUT=D:\libevent\out\vs2015_32\libevent
    call %VS%
    D:
    cd D:\libevent\libevent-master
    nmake /f Makefile.nmake clean
    nmake /f Makefile.nmake OPENSSL_DIR=D:\libevent\out\vs2015_32\openssl
    md %out%\lib
    md %out%\bin
    md %out%\include
    xcopy /S/Y include %out%\include\
    xcopy /S/Y WIN32-Code\nmake %out%\include\
    copy /Y *.lib %out%\lib
    copy /Y *.dll %out%\bin
    copy /Y *.exe %out%\bin
    
    @echo "build openssl sussess"
    pause
    
    
    展开全文
  • 最新vs2019编译libevent-2.1.11-stable 准备工作 安装vs2019 略 下载lievent 下载地址 开始编译 打开vs命令行 进入到libevent库目录 执行nmake /f Makefile.nmake 提示如下报错 解决办法 编辑minheap-internal....

    最新vs2019编译libevent-2.1.11-stable

    准备工作

    开始编译

    • 打开vs命令行
      在这里插入图片描述
    • 进入到libevent库目录
    • 执行nmake /f Makefile.nmake
    • 提示如下报错
      在这里插入图片描述
    • 解决办法
      编辑minheap-internal.h文件,在最前面添加include <stdint.h>头文件,重新执行上述编译命令即可。

    库文件生成

    编译完成后会在当前目录生成libevent.lib,libevent_core.lib,libevent_extras.lib三个静态库,表示编译成功。

    小示例

    实现一个定时器功能

    #include <event2/event.h>
    #include <event2/bufferevent.h>
    #include <event2/event_struct.h>
    #include <ws2tcpip.h>
     
    #pragma comment(lib, "ws2_32.lib")
    #pragma comment(lib, "wsock32.lib")
    #pragma comment(lib, "libevent.lib")
    #pragma comment(lib, "libevent_core.lib")
    #pragma comment(lib, "libevent_extras.lib")
     
    static void timeout_cb(int fd, short event, void *arg)
    {
    	printf("run timeout_cb1\n");
    }
     
    int main()
    {
    #ifdef WIN32
    	WORD wVersionRequested;
    	WSADATA wsaData;
    	wVersionRequested = MAKEWORD(2, 2);
    	(void)WSAStartup(wVersionRequested, &wsaData);
    #endif
     
    	struct event_base *base; 
    	base = event_base_new(); 
    	
    	event event1 ;
    	event_assign(&event1, base, -1, EV_PERSIST, timeout_cb, (void*) &event1);
     
    	struct timeval tv;
    	tv.tv_sec = 1;
    	tv.tv_usec = 0;
     
    	event_add(&event1, &tv);
    	event_base_dispatch(base);
    	getchar();
    	return 0;
    }
    
    展开全文
  • 获取源码 从Libevent官网主页(http://libevent.org/)或者github上(https://github.com/libevent/libevent)将libevent源码包下载下来。 这里我们下载了libevent-2.0.20-stable.zip版本,...打开VS2013开发命令...

    获取源码

    从Libevent官网主页(http://libevent.org/)或者github上(https://github.com/libevent/libevent)将libevent源码包下载下来。

    这里我们下载了libevent-2.0.20-stable.zip版本,解压后得到libevent-2.0.20-stable文件夹。

    编译静态库

    x86

    打开VS2013开发命令行工具(选择"Developer Commmand prompt”开发人员命令提示),运行命令工具。

    然后在”Visual Studio 2013 命令提示”程序里,输入cd命令进入源码文件目录 cd /d x:\xxxxxxxxx\libevent-2.0.20-stable ,其中x:\xxxxxxxxx是libevent-2.0.20-stable解压出来的路径。

    再输入命令 nmake /f Makefile.nmake static_libs   回车

    等待1~2分钟,静态库编译完成。

    这样编译出来的是32位release模式的。

    x64

    修改libevent-2.0.20-stable目录下的Makefile.nmake中配置,添加一个LIBFLAGS选项 /MACHINE:X64 

    打开VS2013开发命令行工具(选择x64命令),运行。

    在”Visual Studio 2013 x64本机工具命令提示”程序里, 输入cd命令进入源码文件目录 cd /d x:\xxxxxxxxx\libevent-2.0.20-stable

    然后输入命令 nmake /f Makefile.nmake clean   回车 (因为我们之前编译了32位版本,所以先进行清除操作)

    然后输入命令 nmake /f Makefile.nmake static_libs  回车

    等待1~2分钟,x64静态库编译完成。

     

    提取静态库

    新建文件夹Third_libs(文件夹名称可以自己取),Third_libs中新建include,lib文件夹。

    include文件夹包含:

    (1)x:\xxxxxxxxx\libevent-2.0.20-stable\include下有event2文件夹和其他.h文件, 拷贝到include.

    (2)x:\xxxxxxxxx\libevent-2.0.20-stable\WIN32-Code\*下有event2文件夹和其他.h文件.

            其他.h文件拷贝到include;

            event2文件中的event-config.h拷贝到include\event2

    (3)x:\xxxxxxxxx\libevent-2.0.20-stable\*.h  拷贝到include

    lib文件夹包含:

    x:\xxxxxxxxx\libevent-2.0.20-stable\目录下生成的  libevent.lib,libevent_core.lib,libevent_extras.lib三个文件.

     

    小编已上传了已编译好的x86/x64 libevent静态库,不想自己编译的朋友可以直接拿去使用。(^U^)ノ~YO

     

    展开全文
  • VS2005编译libevent

    千次阅读 2008-09-15 17:41:00
    VS2005编译libevent收藏 新一篇: 用SourceNavigator看代码 | 旧一篇: Boost.Signals 教程 function StorePage(){d=document;t=d.selection?(d.selection.type!=None?d.selection.createRange().text:):(d....
  • 先要将其依赖的库编译好,其中openssl需要编译libevent中,编译libevent_openssl.lib库,zlib在新版本中只有示例用到。 1)windows 平台使用 VS2017 编译 openssl 源码 参考前面的文章 openssl 默认编译到 C:...
  • VS2015下编译libevent

    千次阅读 2018-11-30 11:27:09
    Party 1 编译32位 lib 打开vs2015 x86命令行 直接进入代码目录,输入 nmake /f Makefile.nmake 得到三个lib 新建VS2015 x86工程, 增加头文件和libevent_core.lib libevent_extras.l...
  • VS2013 编译libevent 并且使用!

    千次阅读 2015-07-30 18:57:40
    打开VS2013开发工具命令行,cd...完成编译,生成libevent_core.lib libevent_extras.lib libevent.lib。 新建VS工程,把lib加入链接器路径,libevent文件夹下的include文件夹拷贝过来,加入C++文件路径,并把libeve
  • 环境:VS2015,libevent libevent下载地址:https://github.com/libevent/libevent/archive/master.zip 操作步骤: 1.下载libevent,解压到C:\Users\Administrator\Desktop\libevent\libevent-master 2.打开vs...
  • windows下用vs2012编译libevent-2.1.8-stable源码~可调试,可看源代码。step1:下载libevent-2.1.8-stable.tar.gz,解压step2:创建一个空的win32工程step3:在新工程里新建include,src两个文件夹step4将libevent解压后...
  • windows下用vs2012编译libevent-2.1.8-stable源码~可调试,可看源代码。step1:下载libevent-2.1.8-stable.tar.gz,解压step2:创建一个空的win32工程step3:在新工程里新建include,src两个文件夹step4将libevent解压后...
  • 下载地址:http://libevent.org/,下载版本:libevent-2.1.11-stable.... 如果编译X64位程序 需修改makefile文件LIBFLAGS的值后面追加/MACHINE:X64如果要加调试信息,可以在 CFLAGS中加入/Zi,32位加调试选项是 CFL...
  • 打开Microsoft visual studio 2013命令行工具,分别是VS2013 x86 本机工具命令提示和VS2013 x64 本机工具命令提示 直接进入代码目录,输入nmake /f Makefile.nmake 目录下会生成libevent_core.lib libe
  • vs2017编译libevent-2.1.8-stable

    千次阅读 2017-10-26 14:45:57
    然后打开你的vs的命令行窗口,按需求打开,如果你要编译64位的,就打开64位 我想编译64bit的,所以我选择如图所示的。用管理员身份打开吧。然后cd到你的源码目录。执行下图命令。 如果你接下来,编译不成功报错,请...
  • vs2013 编译libevent以及出现的问题

    千次阅读 2017-08-30 14:52:15
    编译静态库 转载自:http://blog.csdn.net/flyingleo1981/article/details/51822343 1 解压 把上面下载到libevent-2.0.22-stable.tar.gz解压,得到libevent-2.0.22-stable文件夹 2 添加宏定义 在libevent-2.0.22-...
  • 压缩包里面有静态编译好的openssl1.0.2和libevent-2.1.8,以及libevent的源代码及编译方法,openssl的编译方法请看:https://mp.csdn.net/postedit/81085150
  • vs2015可直接编译libevent静态库lib, 里面包含一个解决方案下三个项目libevent,libevent-core,libevent-extras,可以直接生成需要的lib文件,包含完整项目配置文件sln与vcxproj等等,直接打开就可以编译完成,方便...
  • 1、打开vs2005编译控制台。 cd /d E:\an_ui\Demo\Projects\libevent-2.0.21 nmake /F Makefile.nmake clean nmake /F Makefile.nmake 使用工程编译 两个工程都要加头文件目录: $(SolutionDir) $...
  • 编译libevent

    2020-01-23 20:37:31
    本文记录在win10编译libevent的过程 1.编译前准备zlib,openssl zlib网址 http://www.zlib.net/ 下载源码解压缩 打开vs的dos窗口 32位选择32位窗口这里选择64位,cd 到解压后的文件夹 执行nmake /f win32/...
  • win10+cmake+vs2019编译64位libevent

    万次阅读 2021-01-31 12:33:00
    win10+cmake+vs2019编译...目的:在windows下编译libevent的库文件 可以实现任意版本的libevent手动编译 工具依赖 1.libevent下载,下载链接: https://github.com/libevent/libevent.git 2.openssl下载,下载链接: ...

空空如也

空空如也

1 2 3 4 5 ... 12
收藏数 239
精华内容 95
关键字:

vs编译libevent