Заголовок QT включен, но не находит идентификатор для QSslError

Я скачал исходный код QT 4.8.1 (везде коммерческая версия). И скомпилировал 64-битную версию QT с Visual Studio 2008 Pro под Windwos 7 64-бит.

После этого я создал простой проект приложения QT в vs2008.

но если я добавлю класс 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': неопределенный идентификатор

Но заголовок включен!

QTDIR установлен правильно. И все настройки QT include path также установлены правильно.

я не знаю, почему компилятор 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 не определен в моем коде.)


person jung    schedule 26.03.2013    source источник
comment
Вы настроили Qt для openssl?   -  person drescherjm    schedule 26.03.2013


Ответы (1)


Вероятно, ваша сборка Qt не была настроена с поддержкой OpenSSL. Определение будет в qconfig.h

person Dan Milburn    schedule 26.03.2013
comment
Поддержка openssl является конфигурацией по умолчанию. и это не может быть причиной, потому что это сообщение об ошибке приходит во время компиляции, а не при компоновке. Итак... если объявление заголовка или класса находится в поле зрения, оно должно быть компилируемым. Проблема в том, что даже если объявление класса видно по добавлению заголовка, оно не скомпилируется. - person jung; 27.03.2013
comment
Дело в том, что QT_NO_OPENSSL определяется Qt (в qconfig.h), если он не был настроен с этой поддержкой. Это приведет к сбою компиляции (а не компоновки) именно так, как вы описываете. - person Dan Milburn; 27.03.2013
comment
@DanMilburn, какой должна быть правильная процедура, чтобы противостоять этому (учитывая Qt, который был просто установлен из пакета, найденного в Qt Project)? Просто отредактируйте qconfig.h или библиотеку Qt придется перекомпилировать? - person Momergil; 09.12.2015
comment
@Momergil Qt необходимо перекомпилировать. - person vladon; 28.01.2016