psi windows qt

20 篇文章 0 订阅

在windows环境下,在qt中编译psi是个比较费时费事的事情,今天终于编译通过,在这里记录一下。

psi需要三个东西的支持,qca,qca-ossl,openssl,每一个都可以在google中单独的搜索XXX编译查到,如搜索qca编译得到qca的安装编译方法。

其实每一个的意思是实现第三方插件在qt中的使用,因此如果不熟悉qt,或者不熟悉插件的编译使用方法,是比较麻烦的事情。

下面总结一下我在其中遇到的问题

1、“undefined reference to unzOpen()”

在文件中明明看到了unzOpen()函数,并且也已经能调用了,可是在编译的时候就是通不过!
这个问题可以归结到qt undefined reference to***的问题,究其原因是因为我使用了.c文件,而我们知道qt是c++环境,这样势必是不兼容的
我在文件加入了
#ifdef __cplusplus
extern "C" {
#endif

你的程序

#ifdef __cplusplus
}
#endif

此时问题来了!!!!!!!!!!!!!!!
问题依然存在。

所以我必须要自己动手编译文件了,我在网上搜到了这篇文章,http://wenku.baidu.com/view/1f26d41455270722192ef722.html,感谢楼主的整理,让我少花很多时间!
我也会单独写一篇文章记录下来。《qt4中如何调用C函数》http://blog.csdn.net/cgzhello1/article/details/19190597

按照里面说的,我成功的解决了问题。

当然了,此类问题还有可能是因为类库没有编译,以及编译完成后没有将相应的动态库和静态库添加到qt文件和windows,或者在.pro(工程文件)没有添加的问题。
这个问题可以在网上搜索qt ***编译即可。

2、qca编译时cannot find file -lqcad

关于qca的编译过程请查看http://blog.csdn.net/cgzhello1/article/details/19190119
when you get errors like "cannot find file -lqcad", 
try to edit crypto.prf file find that string and change them to correct one
(note, qca souce debug mode will add letter 'd' after each library name)
3. copy lib/*.dll from each project to D:\work\cpp\program\QtSDK\Desktop\Qt\4.7.4\mingw\plugins\crypto
4. add CONFIG+=crypto.prf in your pro file
5. copy libeay32.dll,ssleay32.dll,qca2.dll,qca-ossl2.dll to your project/debug(or release) folder.
6. copy folder qca-2.0.3\include\QtCrypto to your project folder, you need include QtCrypto header file in your source.
7. Done!

3、cannot find QtCrypto

这个问题是因为没有将qca文件加载到工作目录下,工程文件中也没有添加CONFIG+=crypto.prf的原因。
解决办法:
第一步:将电脑中的QtCrypto文件夹找到,并复制到qt的工程目录下例如我的:c:\Qt\4.8.5\include\下
第二部:将qca编译过的复制到相应的位置,这个位置在另一篇文章中我会提及
第三步:在工程文件中,也就是.pro文件中添加CONFIG+=crypto.prf

 

问题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


解决办法1:在工程文件中添加
CONFIG+=crypto.prf
解决办法2:添加绝对路径
解决办法3:
  
  

如果在添加了这些头文件后,发现明明可以连接到QtCrypto文件,却在编译时说找不到文件,说明你的连接文件时有问题的,#include<QtCrypto>其实项目是想连接到QtCrypto文件夹下面的QtCrypto文件

因此需要做的更改是<QtCrypto/QtCrypto>

问题9:zlib.h: No such file ordirectory

解决办法:如图,在工程文件中,添加zlib.h所在的路径

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值