MSVC 2013 + Qt 5.4.2 + quazip 0.7.1 的编译及使用

来源:互联网 发布:mac版ps怎么安装字体 编辑:程序博客网 时间:2024/05/29 13:13
在Windows平台下,采用cl编译器的编译效率明显要高于Mingw,因其能利用处理器的多核优势并进行多文件同时编译,加上 QMAKE_CXXFLAGS += /MP 编译选项后,个人测试编译时间缩短一半左右。下面的例子不一定局限于MSVC 2013和Qt 5.4.2,只要是qt+msvc的开发形式都可以借鉴。

一、编译quazip库
① 安装Qt msvc2013版本
② 安装MSVC 2013
③ 在官网下载quazip的源码
④ 打开quazip源码文件夹下的 "quazip.pro" 工程文件
⑤ 切换到release状态,运行,此时会提示:
  -1: error: dependent '..\..\quazip-0.7.1\quazip\zlib.h' does not exist.
    原因是找不到zlib.h,因此我这里将
    x:\Qt\Qt5.4.2_msvc2013\5.4\msvc2013_64_opengl\include\QtZlib
    文件夹下的两个文件放到源代码的quazip和qztest文件夹下
⑥ 运行, xxx\quazip\release的 quazip.dll 和 quazip.lib 文件就是我们将要用到的库文件
注:debug版没有测试~~~

二、使用quazip库
① 打开自己的工程,将quazip源码中的头文件提取出来放到相应文件夹下,同时把库文件也放到相应文件夹下,在pro文件中添加如下内容(目录位置根据实际情况):
    INCLUDEPATH += $$PWD/libs/quazip/include/    DEPENDPATH += $$PWD/libs/quazip/include/    win32:CONFIG(release, debug|release): LIBS += -L$$PWD/libs/quazip/lib/ -lquazip    else:win32:CONFIG(debug, debug|release): LIBS += -L$$PWD/libs/quazip/bin/ -lquazip    INCLUDEPATH += x:\Qt\Qt5.4.2_msvc2013\5.4\msvc2013_64_opengl\include\QtZlib\

② 编译,此时会出现如下错误:
    error: C2491: “QuaZipFile::staticMetaObject”: 不允许 dllimport 静态数据成员的定义,这里是 cl 编译器的特有问题,具体原因请百度一下吧,此处不解释了。


③ 查看源代码中的 "quazip_global.h" 文件,里面有下面的描述:

       /**        * When building a DLL with MSVC, QUAZIP_BUILD must be defined.        * qglobal.h takes care of defining Q_DECL_* correctly for msvc/gcc.        */

     因此,根据说明,将自己的pro文件中加上这一行,DEFINES += QUAZIP_BUILD


④ 彻底清除Qt编译产生的的build文件夹,需删掉build文件夹,因为此项修改需要改动Makefile,右键->清除并不能清除掉Makefile文件。


⑤ Run,然后尽情使用吧~

注:这里使用的是release编译方式,debug暂时还没有测试过。
再注:使用 windeployqt命令发布程序的时候,需将quazip.dll放在程序的目录下,虽然之前是Release编译了库,但是并不是静态的,如需静态的,请百度一下吧,我也没有测试过,记得看过资料说,简单的修改下源码就可以了,欢迎大家尝试。
2 0
原创粉丝点击