文章来源:http://blog.sina.com.cn/s/blog_731bf4c90102wnpr.html

本文仅是个人经验总结,若有错误欢迎指教!

最近要做一个跨平台的项目,同时也涉及到网络数据传输,所以考虑采用Qt和Libevent。

1.vs编译libevent

参考网上众多通过VS编译Libevent的文章(http://www.cnblogs.com/luxiaoxun/p/3603399.html),成功编译得到了​libevent.lib、libevent_core.lib、libevent_extras.lib这三个静态库。

2.Qt工程中添加Libevent静态库

新建了一个QT工程(路径为E:\LibeventCaster),创建路径E:\LibeventCaster\libevent_include\event2,存放libevent库的include和WIN32_Code文件夹下的所有.h文件。在QT工程的生成目录(本文中是E:\LibeventCaster-build-desktop)中创建路径E:\LibeventCaster-build-destop\libevent_lib,存放上面编译得到的libevent.lib等三个静态库。在.pro文件(路径为E:\LibeventCaster)中添加头和库的路径,如下所示:

INCLUDEPATH += ./​libevent_include

LIBS += ​-L./libevent_lib -llibevent -llibevent_core -llibevent_extras

其中INCLUDEPATH语句添加.h头文件路径,在程序中通过#include 添加libevent的头,LIBS语句添加lib静态库文件路径,-L代表是静态库,后面无空格,紧跟静态库路径,-l(小写L)​后面紧跟静态库名称(省略.lib),多个-l添加多个静态库。

注意:1)lib库是存放在生成目录-build-desktop下的,否则会提示找不到libevent.lib​。

​          2)如果程序中使用了WSAStartup,需要添加ws2_32.lib库,如下所示。

LIBS += -lws2_32​

3)我的QT最开始使用的是mingw编译器,而libevent.lib三个静态库是用vc++编译器编译的,在qt中使用Libevent的时候会出现security_cookie等类似的错误,在网上找了很久,说是bufferoverflow的问题,让加载bufferoverflowU.lib库,但是错误未解决。又考虑mingw静态库是.a后缀,所以通过reimp和rs两条语句将lib转为a,(http://blog.sina.com.cn/s/blog_731bf4c90102wnn4.html)但错误仍未解决,看来不是后缀名的问题了,考虑还是编译器不一致的问题,VC++编译中使用了缓存溢出的一些东西,而mingw中没有,由于本人不知道如何用mingw来编译libevent.lib(汗颜),所以采用笨办法,设置Qt在Windows平台下的编译器为vc++,这样两者一致起来,错误果然解决了,设置方法如下。

工具——选项——Qt4,设置Qt的版本​(我的安装版本是qt-win-opensource-4.8.2-vs2008,安装路径D:\Qt\4.8.2),qmake路径为D:\Qt\4.8.2\bin\qmake.exe,工具链会自动加载vc++编译器。

4)用上面的方法又出现新的错误​ __imp__CryptGenRandom,网上搜索说缺少AdvAPI32.lib库,所以按照如下方法添加库,错误解决,程序编译成功。

LIBS += -lAdvAPI32​

http://blog.csdn.net/libaineu2004/article/details/53224099

Qt中加载Libevent静态库(通过reimp和rs两条语句将lib转为a)的更多相关文章

  1. QT中加载动态链接库

    一.添加第三方的头文件 这个问题再简单不过了,不过我还是要说下. 首先,添加头文件  #include "ControlCAN.h" 然后,再将这个头文件放到工程的目录下,就OK了 ...

  2. VC中加载LIB库文件的三种方法

    VC中加载LIB库文件的三种方法 在VC中加载LIB文件的三种方法如下: 方法1:LIB文件直接加入到工程文件列表中   在VC中打开File View一页,选中工程名,单击鼠标右键,然后选中&quo ...

  3. Django模版中加载静态文件配置详解

    .settings.INSTALLED_APPS下添加:django.contrib.staticfiles .settings.py下添加:STATIC_URL = '/static/' . ()在 ...

  4. 41.Python中加载静态文件

    在一个网页中,不仅仅只有一个html骨架,还需要css样式文件,js执行文件以及一些图片等.因此在DTL中加载静态文件时一个必须要解决的问题.在DTL中,使用static标签来加载静态文件.要使用st ...

  5. 动态加载vs静态加载

    动态加载: 1:灵活,可以在需要的时候用LoadLibrary进行加载,在不需要的时候用FreeLibrary进行卸载,这样可以不必占用内存. 2:可以在没有dll时候发现,而不致程序报错. 3:加载 ...

  6. C#开发BIMFACE系列49 Web网页中加载模型与图纸的技术方案

    BIMFACE二次开发系列目录     [已更新最新开发文章,点击查看详细] 在BIMFACE二次系列博客中详细介绍了服务器端API的调用方式,如下列表 C#开发BIMFACE系列1   BIMFAC ...

  7. AntiModerate – 渐进式图片加载的 JavaScript 库

    AntiModerate 是一个渐进式图片加载的 JavaScript 库.我们多数看到的图片显示模式,都是从上到下逐渐显示的,这是“标准式”图像:而有的图片是先出现一个很低分辨率的图像轮廓,类似加了 ...

  8. 【python游戏编程之旅】第四篇---pygame中加载位图与常用的数学函数。

    本系列博客介绍以python+pygame库进行小游戏的开发.有写的不对之处还望各位海涵. 在上一篇博客中,我们学习了pygame事件与设备轮询.http://www.cnblogs.com/msxh ...

  9. ArcGIS API for Silverlight中加载Google地形图(瓦片图)

    原文:ArcGIS API for Silverlight中加载Google地形图(瓦片图) 在做水利.气象.土地等行业中,若能使用到Google的地形图那是再合适不过了,下面就介绍如何在ArcGIS ...

随机推荐

  1. java-工具代码

    格式化输出 //d:是输出整数 //10;表示输出10位整数 //0:表示如果不够10位的话,用0来占位,也可以用写成空格,用空格来占位 String a = String.format(" ...

  2. express笔记

    1.req.query: 获取get请求的查询字符串对象 2.req.body: 获取post请求的查询字符串对象,要使用该方法需要先使用body-parser中间件,app.use(bodyPars ...

  3. JAVA从本机获取IP地址

    JAVA从本机获取IP地址 论述: 此篇博客是在工作的时候,需要获得当前网络下面正确的ip地址,在网上查阅很多博客,网上一个比较普遍的说法是通过InetAddress.getLocalHost().g ...

  4. exec 与 open 打开进程

    1 exec ?-keepnewline ?-ignorestderr  args(?号后面表示可以跟的参数) 这个东西一旦执行 , 没有执行完毕父进程会处于等待中 使用一个或多个子进程运行 由arg ...

  5. Oracle BI Publisher 企业版安装后的配置(BI Publisher Enterprise Edition)

    Oracle BI Publisher 企业版安装后的配置(BI Publisher Enterprise Edition) (版权声明,本人原创或者翻译的文章如需转载,如转载用于个人学习,请注明出处 ...

  6. [Scikit-Learn] - 数据预处理 - 缺失值(Missing Value)处理

    reference : http://www.cnblogs.com/chaosimple/p/4153158.html 关于缺失值(missing value)的处理 在sklearn的prepro ...

  7. VBS学习日记(二) 基础知识

    VBScript 基础知识 一.变量 1.全部单引號后面的内容都被解释为凝视.(在vbsedit中ctrl+m凝视,反凝视ctrl+shift+m) 2.在 VBScript 中,变量的命名规则遵循标 ...

  8. C++于public、protected和private说明(From MSDN)

    public(C# 參考): https://msdn.microsoft.com/zh-cn/library/yzh058ae.aspx protected(C# 參考):https://msdn. ...

  9. Multi-processor having shared memory, private cache memories, and invalidate queues having valid bits and flush bits for serializing transactions

    Multi-processor systems are often implemented using a common system bus as the communication mechani ...

  10. WPF范围选择控件(RangeSelector)

    原文:WPF范围选择控件(RangeSelector) 版权声明:本文为博主原创文章,转载请注明作者和出处 https://blog.csdn.net/ZZZWWWPPP11199988899/art ...