在windows环境下,在qt中编译psi是个比较费时费事的事情,今天终于编译通过,在这里记录一下。
psi需要三个东西的支持,qca,qca-ossl,openssl,每一个都可以在google中单独的搜索XXX编译查到,如搜索qca编译得到qca的安装编译方法。
其实每一个的意思是实现第三方插件在qt中的使用,因此如果不熟悉qt,或者不熟悉插件的编译使用方法,是比较麻烦的事情。
下面总结一下我在其中遇到的问题
1、“undefined reference to unzOpen()”
extern "C" {
#endif
你的程序
#ifdef __cplusplus
}
#endif
2、qca编译时cannot find file -lqcad
3、cannot find QtCrypto
问题4:EVP_whirlpool' was not declared in this scope
E:\qtprogram\qca-ossl-2.0.0-beta3\qca-ossl.cpp:6815: error:'EVP_whirlpool' was not declared in this scope
解决办法:可以将其直接注释掉!
问题5:crypto.prf中dos/windows及unix格式问题
WARNING: c:\Qt\4.8.5\mkspecs\features\winlocal.prf:1:Unmatched quotes are deprecated.
WARNING: c:\Qt\4.8.5\mkspecs\features\winlocal.prf:1:Unmatched quotes are deprecated.
WARNING: c:\Qt\4.8.5\mkspecs\features\winlocal.prf:1:Unmatched quotes are deprecated.
WARNING: c:\Qt\4.8.5\mkspecs\features\winlocal.prf:1:Unmatched quotes are deprecated.
解决办1:按照网上介绍,需要crypto.prf里的将"/"改为“\",但是经过我反复试验,发现这样改也无益于事!例如下图:
QCA_INCDIR = "C:/Qt/4.8.5/include/" |
QCA_LIBDIR = "C:/Qt/4.8.5/lib/" |
解决办法2:将QCA-OSSL工程文件.pro用qt打开,直接用qt编译!
问题7:EVP_whirlpool() was not declared in this scope
问题8:QtCrypto: No such file ordirectory
CONFIG+=crypto.prf
解决办法2:添加绝对路径
解决办法3:
如果在添加了这些头文件后,发现明明可以连接到QtCrypto文件,却在编译时说找不到文件,说明你的连接文件时有问题的,#include<QtCrypto>其实项目是想连接到QtCrypto文件夹下面的QtCrypto文件 |
因此需要做的更改是<QtCrypto/QtCrypto> 问题9:zlib.h: No such file ordirectory
解决办法:如图,在工程文件中,添加zlib.h所在的路径
|