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

После этого я создал простой проект приложения 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 также правильно установлены.

Я не знаю, почему компилятор 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
jung 26 Мар 2013 в 13:10
Вы настраивали Qt для openssl?
 – 
drescherjm
26 Мар 2013 в 17:55

1 ответ

Лучший ответ

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

2
Dan Milburn 26 Мар 2013 в 13:41
Поддержка openssl - это конфигурация по умолчанию. и это не может быть причиной, потому что это сообщение об ошибке появляется во время компиляции, а не при компоновке. Итак ... если заголовок или объявление класса видно, оно должно быть компилируемым. Проблема в том, что даже если объявление класса видно путем добавления заголовка, оно не будет компилироваться.
 – 
jung
27 Мар 2013 в 11:00
Дело в том, что QT_NO_OPENSSL определяется Qt (в qconfig.h), если он не был настроен с такой поддержкой. Это приведет к сбою компиляции (а не связывания) точно так, как вы описываете.
 – 
Dan Milburn
27 Мар 2013 в 13:51
Какова была бы правильная процедура, чтобы противостоять этому (учитывая, что Qt был просто установлен из пакета, найденного в Qt Project)? Просто отредактируйте qconfig.h или библиотеку Qt придется перекомпилировать?
 – 
Momergil
9 Дек 2015 в 21:57
1
Qt необходимо перекомпилировать.
 – 
vladon
28 Янв 2016 в 16:40