包括QT头,但没有找到QSslError的标识符

问题描述:

我已经下载QT 4.8.1源码(无处不在 - 商业版)。 并编译6​​4位版本的QT与Windwos 7 64位下的Visual Studio 2008 Pro。包括QT头,但没有找到QSslError的标识符

之后,我在vs2008中创建了一个简单的QT应用程序项目。

但如果我添加QSslError类测试在我的代码如下。

#include <QSslError> 
.. 

Qt64Test::Qt64Test(QWidget* parent, Qt::WFlags flags): QMainWindow(parent, flags) 
{ 
    ui.setupUi(this); 
    QSslError a; 
} 

然后我通过编译得到C2065错误。

1> \ qt64test.cpp(10):错误C2065:QSslError':undifined标识符

但是被包括在报头!

QTDIR设置正确。并且所有QT包括路径设置也被正确设置。

我不知道为什么vs2008编译器没有看到这个标识符。

头文件(qsslerror.h)是这样的:

#ifndef QSSLERROR_H 
#define QSSLERROR_H 

#include <QtCore/qvariant.h> 
#include <QtNetwork/qsslcertificate.h> 

QT_BEGIN_HEADER 

QT_BEGIN_NAMESPACE 

QT_MODULE(Network) 

#ifndef QT_NO_OPENSSL 

class QSslErrorPrivate; 
class Q_NETWORK_EXPORT QSslError 
{ 
public: 
    enum SslError { 
     NoError, 
//.. 

(而QT_NO_OPENSSL没有在我的代码定义。)

+0

你配置QS的openssl? – drescherjm 2013-03-26 13:55:16

也许你的Qt构建没有与OpenSSL的支持配置。该定义将在qconfig.h

+0

openssl支持是一个defalut配置。这不能是原因,因为这个错误信息是在编译时发生的,而不是在链接上。所以..如果头文件或类声明在视野中,它应该是可编译的。问题是,即使类声明通过添加标头可见,它也不会编译。 – jung 2013-03-27 07:00:14

+0

问题是,QT_NO_OPENSSL由Qt(在qconfig.h中)定义,如果它没有配置支持。这将导致编译(不链接)以完全按照您描述的方式失败。 – 2013-03-27 09:51:50

+0

@DanMilburn什么是正确的程序来对付这个问题(考虑Qt是从Qt Project中找到的包中简单安装的)?只需编辑'qconfig.h'或Qt库就必须重新编译? – Momergil 2015-12-09 18:57:49