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文件如下所示:

  1. QT += core
  2. QT -= gui
  3. CONFIG += c++11
  4. TARGET = server
  5. CONFIG += console
  6. CONFIG -= app_bundle
  7. TEMPLATE = app
  8. SOURCES += main.cpp
  9. INCLUDEPATH += include
  10. LIBS += $$PWD/lib/libevent.lib \
  11. $$PWD/lib/libevent_core.lib \
  12. $$PWD/lib/libevent_extras.lib \
  13. 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文件如下所示:

  1. QT += core
  2. QT -= gui
  3. CONFIG += c++11
  4. TARGET = server
  5. CONFIG += console
  6. CONFIG -= app_bundle
  7. TEMPLATE = app
  8. SOURCES += main.cpp
  9. INCLUDEPATH += include
  10. LIBS += $$PWD/lib/libevent.a \
  11. $$PWD/lib/libevent_core.a \
  12. $$PWD/lib/libevent_extra.a \
  13. LIBS += -lWs2_32 -lAdvapi32
  14. 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的更多相关文章

  1. Docker学习笔记二(linux下安装Docker)

    Docker学习笔记二(linux下安装Docker) 1.在线安装linux Docker 这种方式首先要保证linux 环境下可以上网,当然,小编是在自己的电脑上安装了虚拟机,在虚拟机上安装了,l ...

  2. windows下编译libevent(2.1.8)及使用

    一:获取libevent github地址:https://github.com/libevent/libevent/releases 下载2.1.8稳定版 二:编译libevent 我是用的visu ...

  3. NodeJs学习记录(二)win7下 配置node连接oracle的环境

    2017/01/23 星期一 前言:还没看几眼教程,就开始分配任务,涉及到连oracle数据库,所以顺便把整个环境的配置放上来 安装文件清单(1).node-v6.9.1-x64.msi(2).pyt ...

  4. 64位Win7下编译hadoop 1.2.1问题解决

    0.报sed的错误.原因在于没有安装cygwin.安装cygwin的时候要选择sed 1.Cannot run program "autoreconf". 这个问题在网上看了很多解 ...

  5. (二)win7下用Intelij IDEA 远程调试spark standalone 集群

    关于这个spark的环境搭建了好久,踩了一堆坑,今天 环境: WIN7笔记本  spark 集群(4个虚拟机搭建的) Intelij IDEA15 scala-2.10.4 java-1.7.0 版本 ...

  6. 64位Win7下编译Python3的计算机视觉库:OpenCV

    注:本文全原创,作者:Noah Zhang  (http://www.cnblogs.com/noahzn/) OpenCV目前最新版是3.0.0 rc1,官方给出了编译好的Python2可以直接使用 ...

  7. win7下编译Microsoft版的caffe包的MATLAB接口(CPU模式)

    本博客是基于http://www.cnblogs.com/njust-ycc/p/5776286.html这篇博客修改的,做出了更正与补充. 本人机器的环境:Win7+MATLAB2014b+VS20 ...

  8. Windows7 VS2015 下编译 PythonQt3.2

    本文在使用vs2015编译python3.6.7源代码后,编译的PythonQt3.2.如果使用python二进制文件进行安装,注意python的路径即可 本机环境: 1.win7 64 旗舰版 2. ...

  9. 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 ...

随机推荐

  1. Excel常用函数

    1.基本的算数函数 sum() average() 2.三角函数 sin() cos() 3.

  2. 暑假集训(4)第八弹——— 组合(hdu1524)

    题意概括:你已经赢得两局,最后一局是N个棋子往后移动,最后一个无法移动的玩家失败. 题目分析:有向无环图sg值游戏,尼姆游戏的抽象表达.得到每个棋子的sg值之后,把他们异或起来,考察异或值是否为0. ...

  3. jQuery网页元素拖拽插件

    效果说明:配合已有CSS样式,载入插件后,网页元素可以随意在窗口内拖拽,设置了原位置半透明和拖拽半透明的效果选项,可根据需要选择.另外,当页面上有多个可拖拽元素时,可以载入另外一个用于设置z-inde ...

  4. MAF+WPF实现插件式应用程序框架

    关于maf和wpf大家感兴趣的话可以去百度学习一下,下面展示一下成果: 登录界面 主界面:默认的是我的应用,表示已经下载到本地的应用. 辅助应用类似appstore功能,指示未下载或者需要升级的程序列 ...

  5. [原创] linux课堂-学习笔记-目录及概况

    本学习笔记基于:网易云课堂-linux课堂 课时1Centos 6.4安装讲解46:14 课时2Centos 6.4桌面环境介绍与网络连接04:30 课时3 Linux目录结构介绍及内核与shell分 ...

  6. 常用mysql命令大全

    常用的MySQL命令大全 一.连接MySQL 格式: mysql -h主机地址 -u用户名 -p用户密码 1.例1:连接到本机上的MYSQL. 首先在打开DOS窗口,然后进入目录 mysqlbin,再 ...

  7. if...else..的错误用法

    1.最近在写js代码完成一个前段DOM操作的函数时,自己错误的使用了if..else..控制体.为什么是错误的呢?看看我的 代码你就明白了: document.getElementsByClassNa ...

  8. gulp前端自动化构建工具入门篇

    现在我们通过这3个问题来学习一下: 1.什么是gulp? 2.为什么要用gulp? 3.怎么用?   什么是gulp 答:是一个前端自动化的构建工具,直白点说,如果没有这个工具,我们利用人工依旧可以做 ...

  9. shell自定义函数

    Linux中提供了很多内置的函数,但有时我们需要根据自己的需求来创建自定义函数.下面介绍一下关于shell编程中的自定义函数. 1.函数定义 function hello(){    echo &qu ...

  10. java开发命名规范总结

    一 包名的书写规范 (Package)推荐使用公司或机构的顶级域名为包名的前缀,目的是保证各公司/机构内所使用的包名的唯一性.包名全部为小写字母,且具有实际的区分意义. 1.1 一般要求1.选择有意义 ...