Qt中加载Libevent静态库(仅针对Windows环境)

文章来源: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​


相关推荐
<p><span style="color: #424242;"><strong>     </strong></span><span style="color: #424242;">课程从</span><span style="color: #424242;">0开始搭建一个开源微服务架构,并以此架构实现高并发的安全云盘项目。项目涉及到微服务架构的所有细节,包括注册心,网关,配置心,微服务管理,鉴权,加密传输,灰度发布,熔断机制。</span></p> <p><span style="color: #424242;"><strong> </strong></span></p> <p><strong>      从实践讲解软件工程,演示需求分析、架构设计、详细设计文档的编写,分析编程规范,了解多人协作开发策略,理解并应用软件的版本管理,熟悉git工具和软件发布流程,bug管理提交问题。代码提供和同学的作业都使用git. </strong></p> <p><strong>      </strong><span style="color: #424242;">课程有专门的交流答疑群,老师和助教在群,并且有</span><span style="color: #424242;">10次直播答疑课程,解答学员疑问,对学员的代码进行评审,课程学完后,指导学员对xmservice开源微服务架构做贡献。并写入开源库介绍,简历可写参与开源。</span></p> <p><span style="color: #424242;"> </span></p> <p>      本课程会使用libeventqt, openssI,zlib, protobuf等-线开源库联合进行编程。课程所有代码都是跨平台,课程会演示在windows和linux (ubuntu) 环境开发。</p> <p><img src="https://img-bss.csdnimg.cn/202010281342082991.jpg" alt="" /></p> <p><img src="https://img-bss.csdnimg.cn/202010281342347643.jpg" alt="" /></p> <p><img src="https://img-bss.csdnimg.cn/202010281342504162.jpg" alt="" /></p> <p><img src="https://img-bss.csdnimg.cn/202010281343032748.jpg" alt="" /></p> <p><img src="https://img-bss.csdnimg.cn/202010281343231983.jpg" alt="" /></p> <p><strong><img src="https://img-bss.csdnimg.cn/202010281343423466.jpg" alt="" /><br /></strong></p> <p><strong><img src="https://img-bss.csdnimg.cn/202010281343557167.jpg" alt="" /><br /></strong></p> <p><strong><img src="https://img-bss.csdnimg.cn/202010281344066092.jpg" alt="" /><br /></strong></p> <p><strong><img src="https://img-bss.csdnimg.cn/202010281344235555.jpg" alt="" /><br /></strong></p> <p><strong><img src="https://img-bss.csdnimg.cn/202010281344354186.jpg" alt="" /><br /></strong></p> <p><strong><img src="https://img-bss.csdnimg.cn/202010281344484131.jpg" alt="" /><br /></strong></p> <p><strong><img src="https://img-bss.csdnimg.cn/202010281344591951.jpg" alt="" /><br /></strong></p> <p><strong><img src="https://img-bss.csdnimg.cn/202010281345145062.jpg" alt="" /><br /></strong></p> <p><strong> </strong></p> <p><strong> </strong></p> <p><strong> </strong></p>
©️2020 CSDN 皮肤主题: 成长之路 设计师:Amelia_0503 返回首页