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

3.输入指令开始编译,如下图所示。

有网友说编译之前应该在以下3个文件开头添加“#define _WIN32_WINNT 0x0500”
libevent-2.0.22-stable\event_iocp.c
libevent-2.0.22-stable\evthread_win32.c
libevent-2.0.21-stable\listener.c
但是并没有说明为什么要添加,而且我没添加,编译和使用时也没什么问题。
后来还是查了一下_WIN32_WINNT的意义,可以参考:修改WINVER、_WIN32_WINNT和_MSC_VER
4.编译结果
编译成功后,在libevent-2.0.22-stable目录下生成如下三个库文件。
libevent.lib
libevent_core.lib
libevent_extras.lib
至于这三个库文件的功能,可以参考:libevent学习之一:libevent源码的特点和结构
5.测试
我使用的开发工具是Qt 5.5.1 VS2012。
新建一个控制台工程,在工程根目录中新建“include”文件夹,然后进行如下三步操作。
(1)将C:\Users\zhang\Desktop\libevent-2.0.22-stable\include\event2文件夹拷贝到工程的“include”文件夹
(2)将C:\Users\zhang\Desktop\libevent-2.0.22-stable\WIN32-Code\event2\event-config.h文件拷贝到工程的“include\event2”文件夹
(3)将C:\Users\zhang\Desktop\libevent-2.0.22-stable\WIN32-Code\tree.h文件拷贝到工程的“include”文件夹
在工程根目录中新建“lib”文件夹,将生成的三个库文件拷贝到该文件夹。
pro文件如下所示:
- QT += core
- QT -= gui
- CONFIG += c++11
- TARGET = server
- CONFIG += console
- CONFIG -= app_bundle
- TEMPLATE = app
- SOURCES += main.cpp
- INCLUDEPATH += include
- LIBS += $$PWD/lib/libevent.lib \
- $$PWD/lib/libevent_core.lib \
- $$PWD/lib/libevent_extras.lib \
- LIBS += -lWs2_32 -lAdvapi32
windows下socket通信需要加载Ws2_32.lib,这个大家都知道,至于为何需要Advapi32.lib,可以参考:LNK2019:无法解析的外部符号_imp_CryptAcquireContextA@20
然后将libevent自带的例子C:\Users\zhang\Desktop\libevent-2.0.22-stable\sample|h\ello-world.c拷贝到工程中并编译。需要注意的是编译时有两处 C2440:“初始化”:无法从“void *”转换为“event_base *” 的错误,强制转换一下即可。
这是一个简单的服务器的例子。
三.使用MingW编译
1.下载安装MSYS-1.0.11,安装后将c:\MinGW\msys\1.0\etc 中的fstab.sample文件重命名为fstab,并将fstab中的内容改为c:/Qt/Qt5.5.1/Tools/mingw492_32 /mingw,这里使用Qt自带的mingw版本,注意路径c:/Qt/Qt5.5.1/Tools/mingw492_32和/mingw之间有空格
2.打开MSYS,cd 到C:\Users\zhang\Desktop\libevent-2.0.22-stable目录,./configure ,make,make install,安装成功后,生成静态库,如下所示。
c:\MinGW\msys\1.0\local\lib\libevent.a,
c:\MinGW\msys\1.0\local\lib\libevent_corelibevent.a,
c:\MinGW\msys\1.0\local\lib\libevent_extra.a
将这三个库文件拷贝到工程“lib”目录中。
将下图所示的头文件拷贝到工程“linclude”目录中。

3.测试
还是用那个简单服务器的例子。
pro文件如下所示:
- QT += core
- QT -= gui
- CONFIG += c++11
- TARGET = server
- CONFIG += console
- CONFIG -= app_bundle
- TEMPLATE = app
- SOURCES += main.cpp
- INCLUDEPATH += include
- LIBS += $$PWD/lib/libevent.a \
- $$PWD/lib/libevent_core.a \
- $$PWD/lib/libevent_extra.a \
- LIBS += -lWs2_32 -lAdvapi32
- DEFINES += WIN32

注意和“使用VS'2012编译”的pro文件相比,多了最后的DEFINES += WIN32,否则编译工程时会报错。
当然此时编译工程使用的Qt版本是Qt 5.5.1 MingW。
http://blog.csdn.net/caoshangpa/article/details/52838156
libevent学习之二:Windows7(Win7)下编译libevent的更多相关文章
- Docker学习笔记二(linux下安装Docker)
Docker学习笔记二(linux下安装Docker) 1.在线安装linux Docker 这种方式首先要保证linux 环境下可以上网,当然,小编是在自己的电脑上安装了虚拟机,在虚拟机上安装了,l ...
- windows下编译libevent(2.1.8)及使用
一:获取libevent github地址:https://github.com/libevent/libevent/releases 下载2.1.8稳定版 二:编译libevent 我是用的visu ...
- NodeJs学习记录(二)win7下 配置node连接oracle的环境
2017/01/23 星期一 前言:还没看几眼教程,就开始分配任务,涉及到连oracle数据库,所以顺便把整个环境的配置放上来 安装文件清单(1).node-v6.9.1-x64.msi(2).pyt ...
- 64位Win7下编译hadoop 1.2.1问题解决
0.报sed的错误.原因在于没有安装cygwin.安装cygwin的时候要选择sed 1.Cannot run program "autoreconf". 这个问题在网上看了很多解 ...
- (二)win7下用Intelij IDEA 远程调试spark standalone 集群
关于这个spark的环境搭建了好久,踩了一堆坑,今天 环境: WIN7笔记本 spark 集群(4个虚拟机搭建的) Intelij IDEA15 scala-2.10.4 java-1.7.0 版本 ...
- 64位Win7下编译Python3的计算机视觉库:OpenCV
注:本文全原创,作者:Noah Zhang (http://www.cnblogs.com/noahzn/) OpenCV目前最新版是3.0.0 rc1,官方给出了编译好的Python2可以直接使用 ...
- win7下编译Microsoft版的caffe包的MATLAB接口(CPU模式)
本博客是基于http://www.cnblogs.com/njust-ycc/p/5776286.html这篇博客修改的,做出了更正与补充. 本人机器的环境:Win7+MATLAB2014b+VS20 ...
- Windows7 VS2015 下编译 PythonQt3.2
本文在使用vs2015编译python3.6.7源代码后,编译的PythonQt3.2.如果使用python二进制文件进行安装,注意python的路径即可 本机环境: 1.win7 64 旗舰版 2. ...
- Windows7+VS2008 下编译Subversion 1.8.3
一.需要的软件包 1.python-2.7.5.msi http://www.python.org/ 2.ActivePerl-5.8.8.822-MSWin32-x86-280952.msi h ...
随机推荐
- angular的post请求,SpringMVC后台接收不到参数值的解决方案
这是我后台SpringMVC控制器接收isform参数的方法,只是简单的打出它的值: @RequestMapping(method = RequestMethod.POST) @ResponseBod ...
- 老老实实学WCF[第一篇] Hell wcf
老老实实学WCF 第一篇 Hello WCF WCF(Windows Communication Foundation)是微软公司推出的面向服务技术的集大成者,涵盖继承了其之前发布的所有的分布式应用 ...
- will VS be going to
1.Future - Will vs. Going to 2."Will be doing" vs. "will do" 3.Simple Future
- day 0.
/* 嗯 就要结束了. OI生涯 2015.12-2016.11. 认识了很多人. 然后我这个学渣跟你们混在一起 感觉自卑至极啊. 好了 先不说这些伤心的话. Gryz小伙伴儿们NOIP RP++吧. ...
- (hdu)5423 Rikka with Tree (dfs)
题目链接:http://acm.split.hdu.edu.cn/showproblem.php?pid=5423 Problem Description As we know, Rikka is p ...
- 模板:strncpy函数
参考链接:http://baike.baidu.com/view/1207711.htm strncpy 是 C语言的函数之一,来自 C语言标准库,定义于 string.h,char *strncpy ...
- 韩顺平细说Servlet视频系列之tom相关内容
韩顺平细说Servlet视频系列之tom相关内容 tomcat部署项目操作(注意:6.0版本以后的支持该操作,5.x版本需要另外配置?待验证!) 项目发布到tomcat的webapps文件下,然后启动 ...
- redis学习系列
redis学习系列 基本看完 最近在看redis的代码,简单记录下自己认为重要的点,自己写比较费时间的,我会把查到的资料贴出来方便查看 淘宝的redis内存分析 http://www.searchtb ...
- 关于font awesome或Glyphicons字体图标不能正确显示的问题
此处讨论的是关于本地字体的安装和引进 实际操作经验中,某些网站模板设置的CSS, FONTS目录较深,如果按默认的路径设置,字体图标死活都不会显示. 解决办法是将FONTS目录,安装在网站根目录下 C ...
- Oracle访问数据的存取方法
1) 全表扫描(Full Table Scans, FTS) 为实现全表扫描,Oracle读取表中所有的行,并检查每一行是否满足语句的WHERE限制条件.Oracle顺序地读取分配给表的每个数据块,直 ...