2013-03-26 5 views
0

QT 4.8.1 출처 (모든 곳의 상업용 버전)를 다운로드했습니다. 그리고 Windwos 7 64bit에서 Visual Studio 2008 Pro가 포함 된 QT 64 비트 버전을 컴파일했습니다.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

openssl 용 Qt를 구성 했습니까? – drescherjm

답변

2

은 아마 당신의 Qt는 빌드가 OpenSSL을 지원 구성되지 않았습니다. 정의는 qconfig.h에 있습니다.

+0

openssl 지원은 defalut 구성입니다. 이 오류 메시지는 컴파일시가 아니라 연결시 제공되므로 이유가 될 수 없습니다. 헤더 나 클래스 선언이 보이는 경우에는 컴파일 가능해야합니다. 클래스 선언이 헤더를 추가하여 표시 되더라도 컴파일되지 않습니다. – jung

+0

QT_NO_OPENSSL은 해당 지원이 구성되지 않은 경우 qconfig.h의 Qt에 의해 정의됩니다. 이것은 당신이 묘사하는 방식대로 컴파일이 실패하게 할 것입니다. –

+0

@ DanMilburn이 문제를 해결하는 적절한 절차는 무엇입니까? (단순히 Qt Project에있는 팩에서 설치 한 Qt를 고려하십시오)? 'qconfig.h' 만 편집하면 Qt 라이브러리를 다시 컴파일해야합니까? – Momergil

관련 문제