Qt中加载Libevent静态库(通过reimp和rs两条语句将lib转为a)
文章来源: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)的更多相关文章
- QT中加载动态链接库
一.添加第三方的头文件 这个问题再简单不过了,不过我还是要说下. 首先,添加头文件 #include "ControlCAN.h" 然后,再将这个头文件放到工程的目录下,就OK了 ...
- VC中加载LIB库文件的三种方法
VC中加载LIB库文件的三种方法 在VC中加载LIB文件的三种方法如下: 方法1:LIB文件直接加入到工程文件列表中 在VC中打开File View一页,选中工程名,单击鼠标右键,然后选中&quo ...
- Django模版中加载静态文件配置详解
.settings.INSTALLED_APPS下添加:django.contrib.staticfiles .settings.py下添加:STATIC_URL = '/static/' . ()在 ...
- 41.Python中加载静态文件
在一个网页中,不仅仅只有一个html骨架,还需要css样式文件,js执行文件以及一些图片等.因此在DTL中加载静态文件时一个必须要解决的问题.在DTL中,使用static标签来加载静态文件.要使用st ...
- 动态加载vs静态加载
动态加载: 1:灵活,可以在需要的时候用LoadLibrary进行加载,在不需要的时候用FreeLibrary进行卸载,这样可以不必占用内存. 2:可以在没有dll时候发现,而不致程序报错. 3:加载 ...
- C#开发BIMFACE系列49 Web网页中加载模型与图纸的技术方案
BIMFACE二次开发系列目录 [已更新最新开发文章,点击查看详细] 在BIMFACE二次系列博客中详细介绍了服务器端API的调用方式,如下列表 C#开发BIMFACE系列1 BIMFAC ...
- AntiModerate – 渐进式图片加载的 JavaScript 库
AntiModerate 是一个渐进式图片加载的 JavaScript 库.我们多数看到的图片显示模式,都是从上到下逐渐显示的,这是“标准式”图像:而有的图片是先出现一个很低分辨率的图像轮廓,类似加了 ...
- 【python游戏编程之旅】第四篇---pygame中加载位图与常用的数学函数。
本系列博客介绍以python+pygame库进行小游戏的开发.有写的不对之处还望各位海涵. 在上一篇博客中,我们学习了pygame事件与设备轮询.http://www.cnblogs.com/msxh ...
- ArcGIS API for Silverlight中加载Google地形图(瓦片图)
原文:ArcGIS API for Silverlight中加载Google地形图(瓦片图) 在做水利.气象.土地等行业中,若能使用到Google的地形图那是再合适不过了,下面就介绍如何在ArcGIS ...
随机推荐
- 【BZOJ 1012】 [JSOI2008]最大数maxnumber(单调队列做法)
[题目链接]:http://www.lydsy.com/JudgeOnline/problem.php?id=1012 [题意] [题解] 后加入的元素,如果比之前的元素大, 那么之前的元素比它小的元 ...
- Browser security standards via access control
A computing system is operable to contain a security module within an operating system. This securit ...
- 【22.73%】【codeforces 606D】Lazy Student
time limit per test2 seconds memory limit per test256 megabytes inputstandard input outputstandard o ...
- Android app 第三方微信支付接入详解
微信支付做了好几遍了,都没有出现什么棘手的问题,下面一一为大家分享一下,欢迎吐槽. 还是老样子,接入微信的支付要第一步添加微信支付官方的包libammsdk.jar 首先就处理略坑的一个问题,app应 ...
- MapReduce 经典案例手机流量排序的分析
在进行流量排序之前,先要明白排序是发生在map阶段,排序之后(排序结束后map阶段才会显示100%完成)才会到reduce阶段(事实上reduce也会排序),.此外排序之前要已经完成了手机流量的统计工 ...
- K 线图的认识
股市中的一个铁律就是:如果有个操盘规则广为所知,它会自动平衡,该规则就会失效. 1. 基本经济学概念 大盘:market index,上证综合指数(上海证券综合指数): 其样本股是全部上市股票,包括 ...
- Configuring a remote m-phy
An interface for low power, high bandwidth communications between units in a device in provided here ...
- No_Sql总结
NoSQL简介 NoSQL(NoSQL = Not Only SQL ),意即"不仅仅是SQL",是对不同于传统的关系型数据库的数据库管理系统的统称.在现代的计算系统上每天网络上都 ...
- sql知识收藏小总结
div { background-color: #eee; border-radius: 3px; border: 1px solid #999; padding: 4px; display: blo ...
- JPEG图像扩展信息读取和修改
最近,项目需要使用jpg图像信息被写入(非水印),经过研究发现,Android已封装的读者jpg图片扩展信息api(ExifInterface). 通讯api住址:http://developer.a ...