问题为支持OpenSSL的Windows Phone 8.1编译Qt 5.5

时间:2016-03-14 11:26:09

标签: c++ windows openssl windows-phone-8.1 qt5

我正在尝试为Windows Phone 8.1构建Qt 5.5。 目前我使用Qt5框架在App上工作。该应用程序在iOS和Android上运行良好。现在我也想支持Windows Phone。

在App I中,我使用OpenSSL API创建证书签名请求和相应的密钥对。我也使用QSslSocket。所以我需要使用OpenSSL支持编译Qt。

在我的环境中,我使用:

  • Windows 10 Pro
  • Visual Studio 2015社区版
  • Strawberry Perl(需要编译OpenSSL)
  • Qt Community Edition(在线安装程序)

对于Windows Phone,我从Microsoft编译OpenSSL(https://github.com/Microsoft/openssl commit 632474b204aa5fd305e30ca851f1a8c09563dbc3)

要编译OpenSSL,我使用了命令外壳并执行了以下命令(来自https://github.com/Microsoft/openssl/blob/WinRT/INSTALL.WINAPP):

C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\vcvarsall.bat
cd C:\openssl
perl Configure no-asm no-hw no-dso VC-WINSTORE
ms\do_winstore
ms\setVSvars ws8.1arm

set LIBPATH=C:\Program Files (x86)\Microsoft SDKs\Windows Phone\v8.1\ExtensionSDKs\Microsoft.VCLibs\12.0\References\CommonConfiguration\neutral;%LIBPATH%

nmake -f ms\nt.mak init
nmake -f ms\nt.mak

汇编似乎很好。

然后我将生成的文件从C:\ openssl \ out32复制到C:\ lib \ openssl

我将文件从C:\ openssl \ include复制到C:\ include

为了编译Qt框架,我使用" VS2015 x86 Native Tools命令提示符"如http://wiki.qt.io/WinRTBuild

中所述

然后在C:\ Qt \ 5.5 \ Src中执行以下两个命令:

configure -nomake examples -nomake tests -openssl -I C:\include -L C:\lib\openssl -opensource -prefix C:\Qt\5.5.1 -confirm-license -xplatform winphone-arm-msvc2013 -release

nmake

它编译并在一段时间后退出并出现以下错误:

...
Generating Code...
        cl -c -FIqt_pch.h -Yuqt_pch.h -Fp.pch\release\Qt5Network_pch.pch -nologo -FS -O2 -MD -D_HAS_EXCEPTIONS=0 -GR -W3 -w34100 -w34189 -w44996 -DUNICODE -DWIN32 -DQT_LARGEFILE_SUPPORT -DQ_BYTE_ORDER=Q_LITTLE_ENDIAN -DQT_NO_PRINTER -DQT_NO_PRINTDIALOG -DWINAPI_FAMILY=WINAPI_FAMILY_PHONE_APP -DARM -D__ARM__ -D__ARM__ -DQT_NO_USING_NAMESPACE -DQT_BUILD_NETWORK_LIB -DQT_BUILDING_QT -D_CRT_SECURE_NO_WARNINGS -D_USE_MATH_DEFINES -DQT_NO_CAST_TO_ASCII -DQT_ASCII_CAST_WARNINGS -DQT_MOC_COMPAT -DQT_USE_QSTRINGBUILDER -DQT_DEPRECATED_WARNINGS -DQT_DISABLE_DEPRECATED_BEFORE=0x040800 -DQT_LOCALSOCKET_TCP -DQT_NO_EXCEPTIONS -DQT_NO_DEBUG -DQT_CORE_LIB -DNDEBUG -I. -IC:\include -I..\..\include -I..\..\include\QtNetwork -I..\..\include\QtNetwork\5.5.1 -I..\..\include\QtNetwork\5.5.1\QtNetwork -Itmp -I..\3rdparty\zlib -Ikernel -I..\..\include\QtCore\5.5.1 -I..\..\include\QtCore\5.5.1\QtCore -I..\..\include\QtCore -I.moc\release -I..\..\mkspecs\winphone-arm-msvc2013 -Fo.obj\release\ @C:\Users\gordon\AppData\Local\Temp\nm609E.tmp
qasn1element.cpp
qssl.cpp
qsslcertificate.cpp
c:\qt\5.5\src\qtbase\src\network\ssl\qsslsocket_winrt_p.h(68) : error C2011: 'QSslSocketBackendPrivate' : 'class' type redefinition
        c:\qt\5.5\src\qtbase\src\network\ssl\qsslsocket_openssl_p.h(100) : see declaration of 'QSslSocketBackendPrivate'
ssl\qsslcertificate.cpp(572) : error C2027: use of undefined type 'QSslSocketBackendPrivate'
        c:\qt\5.5\src\qtbase\src\network\ssl\qsslsocket_openssl_p.h(100) : see declaration of 'QSslSocketBackendPrivate'
ssl\qsslcertificate.cpp(592) : error C2027: use of undefined type 'QSslSocketBackendPrivate'
        c:\qt\5.5\src\qtbase\src\network\ssl\qsslsocket_openssl_p.h(100) : see declaration of 'QSslSocketBackendPrivate'
qsslconfiguration.cpp
qsslcipher.cpp
qsslellipticcurve.cpp
qsslkey_p.cpp
qsslerror.cpp
qsslsocket.cpp
c:\qt\5.5\src\qtbase\src\network\ssl\qsslsocket_winrt_p.h(68) : error C2011: 'QSslSocketBackendPrivate' : 'class' type redefinition
        c:\qt\5.5\src\qtbase\src\network\ssl\qsslsocket_openssl_p.h(100) : see declaration of 'QSslSocketBackendPrivate'
ssl\qsslsocket.cpp(347) : error C2027: use of undefined type 'QSslSocketBackendPrivate'
        c:\qt\5.5\src\qtbase\src\network\ssl\qsslsocket_openssl_p.h(100) : see declaration of 'QSslSocketBackendPrivate'
ssl\qsslsocket.cpp(347) : fatal error C1903: unable to recover from previous error(s); stopping compilation
qsslpresharedkeyauthenticator.cpp
qsslcertificateextension.cpp
qsslcertificate_qt.cpp
c:\qt\5.5\src\qtbase\src\network\ssl\qsslcertificate_p.h(86) : error C3861: 'q_X509_free': identifier not found
ssl\qsslcertificate_qt.cpp(54) : error C2039: 'derData' : is not a member of 'QSslCertificatePrivate'
        c:\qt\5.5\src\qtbase\src\network\ssl\qsslcertificate_p.h(74) : see declaration of 'QSslCertificatePrivate'
        c:\qt\5.5\src\qtbase\src\network\ssl\qsslcertificate_p.h(74) : see declaration of 'QSslCertificatePrivate'
ssl\qsslcertificate_qt.cpp(76) : error C2039: 'subjectMatchesIssuer' : is not a member of 'QSslCertificatePrivate'
        c:\qt\5.5\src\qtbase\src\network\ssl\qsslcertificate_p.h(74) : see declaration of 'QSslCertificatePrivate'
ssl\qsslcertificate_qt.cpp(121) : error C2039: 'subjectAlternativeNames' : is not a member of 'QSslCertificatePrivate'
        c:\qt\5.5\src\qtbase\src\network\ssl\qsslcertificate_p.h(74) : see declaration of 'QSslCertificatePrivate'
...
ssl\qsslcertificate_qt.cpp(377) : error C2660: 'QDataStream::readRawData' : function does not take 1 arguments
ssl\qsslcertificate_qt.cpp(386) : error C3861: 'parseExtension': identifier not found
ssl\qsslcertificate_qt.cpp(388) : error C2065: 'extensions' : undeclared identifier
ssl\qsslcertificate_qt.cpp(398) : error C2065: 'subjectAlternativeNames' : undeclared identifier
ssl\qsslcertificate_qt.cpp(398) : error C2228: left of '.insert' must have class/struct/union
        type is 'unknown-type'
ssl\qsslcertificate_qt.cpp(400) : error C2065: 'subjectAlternativeNames' : undeclared identifier
ssl\qsslcertificate_qt.cpp(400) : error C2228: left of '.insert' must have class/struct/union
        type is 'unknown-type'
ssl\qsslcertificate_qt.cpp(410) : error C2065: 'derData' : undeclared identifier
ssl\qsslcertificate_qt.cpp(411) : error C2065: 'null' : undeclared identifier
ssl\qsslcertificate_qt.cpp(415) : error C2039: 'parseExtension' : is not a member of 'QSslCertificatePrivate'
        c:\qt\5.5\src\qtbase\src\network\ssl\qsslcertificate_p.h(74) : see declaration of 'QSslCertificatePrivate'
ssl\qsslcertificate_qt.cpp(505) : error C2248: 'QSslCertificateExtension::d' : cannot access private member declared in class 'QSslCertificateExtension'
        c:\qt\5.5\src\qtbase\src\network\ssl\qsslcertificateextension.h(69) : see declaration of 'QSslCertificateExtension::d'
        c:\qt\5.5\src\qtbase\src\network\ssl\qsslcertificateextension.h(50) : see declaration of 'QSslCertificateExtension'
ssl\qsslcertificate_qt.cpp(506) : error C2248: 'QSslCertificateExtension::d' : cannot access private member declared in class 'QSslCertificateExtension'
        c:\qt\5.5\src\qtbase\src\network\ssl\qsslcertificateextension.h(69) : see declaration of 'QSslCertificateExtension::d'
        c:\qt\5.5\src\qtbase\src\network\ssl\qsslcertificateextension.h(50) : see declaration of 'QSslCertificateExtension'
ssl\qsslcertificate_qt.cpp(507) : error C2248: 'QSslCertificateExtension::d' : cannot access private member declared in class 'QSslCertificateExtension'
        c:\qt\5.5\src\qtbase\src\network\ssl\qsslcertificateextension.h(69) : see declaration of 'QSslCertificateExtension::d'
        c:\qt\5.5\src\qtbase\src\network\ssl\qsslcertificateextension.h(50) : see declaration of 'QSslCertificateExtension'
ssl\qsslcertificate_qt.cpp(508) : error C2248: 'QSslCertificateExtension::d' : cannot access private member declared in class 'QSslCertificateExtension'
        c:\qt\5.5\src\qtbase\src\network\ssl\qsslcertificateextension.h(69) : see declaration of 'QSslCertificateExtension::d'
        c:\qt\5.5\src\qtbase\src\network\ssl\qsslcertificateextension.h(50) : see declaration of 'QSslCertificateExtension'
ssl\qsslcertificate_qt.cpp(509) : error C2248: 'QSslCertificateExtension::d' : cannot access private member declared in class 'QSslCertificateExtension'
        c:\qt\5.5\src\qtbase\src\network\ssl\qsslcertificateextension.h(69) : see declaration of 'QSslCertificateExtension::d'
        c:\qt\5.5\src\qtbase\src\network\ssl\qsslcertificateextension.h(50) : see declaration of 'QSslCertificateExtension'
qsslcertificate_winrt.cpp
c:\qt\5.5\src\qtbase\src\network\ssl\qsslcertificate_p.h(86) : error C3861: 'q_X509_free': identifier not found
ssl\qsslcertificate_winrt.cpp(98) : error C2039: 'derData' : is not a member of 'QSslCertificatePrivate'
        c:\qt\5.5\src\qtbase\src\network\ssl\qsslcertificate_p.h(74) : see declaration of 'QSslCertificatePrivate'
ssl\qsslcertificate_winrt.cpp(98) : error C2228: left of '.length' must have class/struct/union
        c:\qt\5.5\src\qtbase\src\network\ssl\qsslcertificate_p.h(74) : see declaration of 'QSslCertificatePrivate'
ssl\qsslcertificate_winrt.cpp(98) : error C2228: left of '.data' must have class/struct/union
ssl\qsslcertificate_winrt.cpp(98) : error C2660: 'ABI::Windows::Security::Cryptography::ICryptographicBufferStatics::CreateFromByteArray' : function does not take 2 arguments
qsslkey_qt.cpp
ssl\qsslkey_qt.cpp(117) : error C2039: 'Cipher' : is not a member of 'QSslKeyPrivate'
        c:\qt\5.5\src\qtbase\src\network\ssl\qsslkey_p.h(61) : see declaration of 'QSslKeyPrivate'
ssl\qsslkey_qt.cpp(117) : error C2065: 'Cipher' : undeclared identifier
ssl\qsslkey_qt.cpp(117) : error C2146: syntax error : missing ')' before identifier 'cipher'
ssl\qsslkey_qt.cpp(117) : error C2059: syntax error : ')'
ssl\qsslkey_qt.cpp(118) : error C2143: syntax error : missing ';' before '{'
ssl\qsslkey_qt.cpp(118) : error C2447: '{' : missing function header (old-style formal list?)
ssl\qsslkey_qt.cpp(146) : error C2065: 'derData' : undeclared identifier
ssl\qsslkey_qt.cpp(146) : error C2228: left of '.clear' must have class/struct/union
        type is 'unknown-type'
ssl\qsslkey_qt.cpp(147) : error C2065: 'keyLength' : undeclared identifier
ssl\qsslkey_qt.cpp(179) : error C2065: 'keyLength' : undeclared identifier
ssl\qsslkey_qt.cpp(189) : error C2065: 'keyLength' : undeclared identifier
ssl\qsslkey_qt.cpp(195) : error C2065: 'keyLength' : undeclared identifier
ssl\qsslkey_qt.cpp(213) : error C2065: 'keyLength' : undeclared identifier
ssl\qsslkey_qt.cpp(219) : error C2065: 'keyLength' : undeclared identifier
ssl\qsslkey_qt.cpp(232) : error C2065: 'keyLength' : undeclared identifier
ssl\qsslkey_qt.cpp(236) : error C2065: 'derData' : undeclared identifier
ssl\qsslkey_qt.cpp(252) : error C2065: 'Cipher' : undeclared identifier
ssl\qsslkey_qt.cpp(252) : error C2146: syntax error : missing ';' before identifier 'cipher'
ssl\qsslkey_qt.cpp(252) : error C2065: 'cipher' : undeclared identifier
ssl\qsslkey_qt.cpp(254) : error C2065: 'cipher' : undeclared identifier
ssl\qsslkey_qt.cpp(254) : error C2065: 'DesCbc' : undeclared identifier
ssl\qsslkey_qt.cpp(256) : error C2065: 'cipher' : undeclared identifier
ssl\qsslkey_qt.cpp(256) : error C2065: 'DesEde3Cbc' : undeclared identifier
ssl\qsslkey_qt.cpp(258) : error C2065: 'cipher' : undeclared identifier
ssl\qsslkey_qt.cpp(258) : error C2065: 'Rc2Cbc' : undeclared identifier
ssl\qsslkey_qt.cpp(265) : error C2065: 'cipher' : undeclared identifier
ssl\qsslkey_qt.cpp(266) : error C2065: 'cipher' : undeclared identifier
ssl\qsslkey_qt.cpp(266) : error C3861: 'decrypt': identifier not found
ssl\qsslkey_qt.cpp(273) : error C2065: 'keyLength' : undeclared identifier
ssl\qsslkey_qt.cpp(288) : error C2065: 'Cipher' : undeclared identifier
ssl\qsslkey_qt.cpp(288) : error C2146: syntax error : missing ';' before identifier 'cipher'
ssl\qsslkey_qt.cpp(288) : error C2065: 'cipher' : undeclared identifier
ssl\qsslkey_qt.cpp(288) : error C2065: 'DesEde3Cbc' : undeclared identifier
ssl\qsslkey_qt.cpp(289) : error C2065: 'cipher' : undeclared identifier
ssl\qsslkey_qt.cpp(290) : error C2065: 'cipher' : undeclared identifier
ssl\qsslkey_qt.cpp(290) : error C2065: 'derData' : undeclared identifier
ssl\qsslkey_qt.cpp(290) : error C3861: 'encrypt': identifier not found
ssl\qsslkey_qt.cpp(295) : error C2065: 'derData' : undeclared identifier
qsslkey_winrt.cpp
c:\qt\5.5\src\qtbase\src\network\ssl\qsslcertificate_p.h(86) : error C3861: 'q_X509_free': identifier not found
ssl\qsslkey_winrt.cpp(87) : error C2039: 'Cipher' : is not a member of 'QSslKeyPrivate'
        c:\qt\5.5\src\qtbase\src\network\ssl\qsslkey_p.h(61) : see declaration of 'QSslKeyPrivate'
ssl\qsslkey_winrt.cpp(87) : error C2065: 'Cipher' : undeclared identifier
ssl\qsslkey_winrt.cpp(87) : error C2923: 'QHash' : 'Cipher' is not a valid template type argument for parameter 'Key'
ssl\qsslkey_winrt.cpp(60) : error C2512: 'QHash' : no appropriate default constructor available
ssl\qsslkey_winrt.cpp(72) : error C2039: 'DesCbc' : is not a member of 'QSslKeyPrivate'
        c:\qt\5.5\src\qtbase\src\network\ssl\qsslkey_p.h(61) : see declaration of 'QSslKeyPrivate'
ssl\qsslkey_winrt.cpp(72) : error C2065: 'DesCbc' : undeclared identifier
ssl\qsslkey_winrt.cpp(72) : error C2660: 'ABI::Windows::Security::Cryptography::Core::ISymmetricKeyAlgorithmProviderStatics::OpenAlgorithm' : function does not take 1 arguments
ssl\qsslkey_winrt.cpp(75) : error C2039: 'DesEde3Cbc' : is not a member of 'QSslKeyPrivate'
        c:\qt\5.5\src\qtbase\src\network\ssl\qsslkey_p.h(61) : see declaration of 'QSslKeyPrivate'
ssl\qsslkey_winrt.cpp(75) : error C2065: 'DesEde3Cbc' : undeclared identifier
ssl\qsslkey_winrt.cpp(75) : error C2660: 'ABI::Windows::Security::Cryptography::Core::ISymmetricKeyAlgorithmProviderStatics::OpenAlgorithm' : function does not take 1 arguments
ssl\qsslkey_winrt.cpp(78) : error C2039: 'Rc2Cbc' : is not a member of 'QSslKeyPrivate'
        c:\qt\5.5\src\qtbase\src\network\ssl\qsslkey_p.h(61) : see declaration of 'QSslKeyPrivate'
ssl\qsslkey_winrt.cpp(78) : error C2065: 'Rc2Cbc' : undeclared identifier
ssl\qsslkey_winrt.cpp(78) : error C2660: 'ABI::Windows::Security::Cryptography::Core::ISymmetricKeyAlgorithmProviderStatics::OpenAlgorithm' : function does not take 1 arguments
ssl\qsslkey_winrt.cpp(92) : error C2039: 'Cipher' : is not a member of 'QSslKeyPrivate'
        c:\qt\5.5\src\qtbase\src\network\ssl\qsslkey_p.h(61) : see declaration of 'QSslKeyPrivate'
ssl\qsslkey_winrt.cpp(92) : error C2065: 'Cipher' : undeclared identifier
ssl\qsslkey_winrt.cpp(92) : error C2146: syntax error : missing ')' before identifier 'cipher'
ssl\qsslkey_winrt.cpp(92) : error C2059: syntax error : ')'
ssl\qsslkey_winrt.cpp(93) : error C2143: syntax error : missing ';' before '{'
ssl\qsslkey_winrt.cpp(93) : error C2447: '{' : missing function header (old-style formal list?)
ssl\qsslkey_winrt.cpp(146) : error C2039: 'decrypt' : is not a member of 'QSslKeyPrivate'
        c:\qt\5.5\src\qtbase\src\network\ssl\qsslkey_p.h(61) : see declaration of 'QSslKeyPrivate'
ssl\qsslkey_winrt.cpp(146) : error C2065: 'Cipher' : undeclared identifier
ssl\qsslkey_winrt.cpp(146) : error C2146: syntax error : missing ')' before identifier 'cipher'
ssl\qsslkey_winrt.cpp(146) : error C2059: syntax error : ')'
ssl\qsslkey_winrt.cpp(147) : error C2143: syntax error : missing ';' before '{'
ssl\qsslkey_winrt.cpp(147) : error C2447: '{' : missing function header (old-style formal list?)
ssl\qsslkey_winrt.cpp(151) : error C2039: 'encrypt' : is not a member of 'QSslKeyPrivate'
        c:\qt\5.5\src\qtbase\src\network\ssl\qsslkey_p.h(61) : see declaration of 'QSslKeyPrivate'
ssl\qsslkey_winrt.cpp(151) : error C2065: 'Cipher' : undeclared identifier
ssl\qsslkey_winrt.cpp(151) : error C2146: syntax error : missing ')' before identifier 'cipher'
ssl\qsslkey_winrt.cpp(151) : error C2059: syntax error : ')'
ssl\qsslkey_winrt.cpp(152) : error C2143: syntax error : missing ';' before '{'
ssl\qsslkey_winrt.cpp(152) : error C2447: '{' : missing function header (old-style formal list?)
qsslsocket_winrt.cpp
c:\qt\5.5\src\qtbase\src\network\ssl\qsslcertificate_p.h(86) : error C3861: 'q_X509_free': identifier not found
qsslellipticcurve_dummy.cpp
qsslcertificate_openssl.cpp
qsslcontext_openssl.cpp
ssl\qsslcontext_openssl.cpp(471) : error C2027: use of undefined type 'ssl_session_st'
        C:\include\openssl/ssl.h(352) : see declaration of 'ssl_session_st'
ssl\qsslcontext_openssl.cpp(471) : error C2227: left of '->tlsext_tick_lifetime_hint' must point to class/struct/union/generic type
qsslellipticcurve_openssl.cpp
Generating Code...
Compiling...
qsslkey_openssl.cpp
qsslsocket_openssl.cpp
ssl\qsslsocket_openssl.cpp(87) : error C2039: 'ptrCertOpenSystemStoreW' : is not a member of 'QSslSocketPrivate'
        c:\qt\5.5\src\qtbase\src\network\ssl\qsslsocket_p.h(97) : see declaration of 'QSslSocketPrivate'
ssl\qsslsocket_openssl.cpp(87) : error C2146: syntax error : missing ';' before identifier 'ptrCertOpenSystemStoreW'
ssl\qsslsocket_openssl.cpp(87) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
ssl\qsslsocket_openssl.cpp(88) : error C2039: 'ptrCertFindCertificateInStore' : is not a member of 'QSslSocketPrivate'
        c:\qt\5.5\src\qtbase\src\network\ssl\qsslsocket_p.h(97) : see declaration of 'QSslSocketPrivate'
ssl\qsslsocket_openssl.cpp(88) : error C2146: syntax error : missing ';' before identifier 'ptrCertFindCertificateInStore'
ssl\qsslsocket_openssl.cpp(88) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
ssl\qsslsocket_openssl.cpp(89) : error C2039: 'ptrCertCloseStore' : is not a member of 'QSslSocketPrivate'
        c:\qt\5.5\src\qtbase\src\network\ssl\qsslsocket_p.h(97) : see declaration of 'QSslSocketPrivate'
ssl\qsslsocket_openssl.cpp(89) : error C2146: syntax error : missing ';' before identifier 'ptrCertCloseStore'
ssl\qsslsocket_openssl.cpp(89) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
ssl\qsslsocket_openssl.cpp(549) : error C3861: 'LoadLibraryW': identifier not found
ssl\qsslsocket_openssl.cpp(556) : error C2146: syntax error : missing ';' before identifier 'GetProcAddress'
ssl\qsslsocket_openssl.cpp(557) : error C2146: syntax error : missing ';' before identifier 'GetProcAddress'
ssl\qsslsocket_openssl.cpp(558) : error C2146: syntax error : missing ';' before identifier 'GetProcAddress'
ssl\qsslsocket_openssl.cpp(749) : error C2065: 'HCERTSTORE' : undeclared identifier
ssl\qsslsocket_openssl.cpp(749) : error C2146: syntax error : missing ';' before identifier 'hSystemStore'
ssl\qsslsocket_openssl.cpp(749) : error C2065: 'hSystemStore' : undeclared identifier
ssl\qsslsocket_openssl.cpp(757) : error C2065: 'hSystemStore' : undeclared identifier
ssl\qsslsocket_openssl.cpp(757) : error C2064: term does not evaluate to a function taking 2 arguments
ssl\qsslsocket_openssl.cpp(759) : error C2065: 'hSystemStore' : undeclared identifier
ssl\qsslsocket_openssl.cpp(760) : error C2065: 'PCCERT_CONTEXT' : undeclared identifier
ssl\qsslsocket_openssl.cpp(760) : error C2146: syntax error : missing ';' before identifier 'pc'
ssl\qsslsocket_openssl.cpp(760) : error C2065: 'pc' : undeclared identifier
ssl\qsslsocket_openssl.cpp(762) : error C2065: 'pc' : undeclared identifier
ssl\qsslsocket_openssl.cpp(762) : error C2065: 'hSystemStore' : undeclared identifier
ssl\qsslsocket_openssl.cpp(762) : error C2065: 'X509_ASN_ENCODING' : undeclared identifier
ssl\qsslsocket_openssl.cpp(762) : error C2065: 'CERT_FIND_ANY' : undeclared identifier
ssl\qsslsocket_openssl.cpp(763) : error C2065: 'pc' : undeclared identifier
ssl\qsslsocket_openssl.cpp(765) : error C2065: 'pc' : undeclared identifier
ssl\qsslsocket_openssl.cpp(765) : error C2227: left of '->pbCertEncoded' must point to class/struct/union/generic type
        type is 'unknown-type'
ssl\qsslsocket_openssl.cpp(765) : error C2227: left of '->cbCertEncoded' must point to class/struct/union/generic type
        type is 'unknown-type'
ssl\qsslsocket_openssl.cpp(769) : error C2065: 'hSystemStore' : undeclared identifier
ssl\qsslsocket_openssl.cpp(1430) : error C2065: 'PCCERT_CONTEXT' : undeclared identifier
ssl\qsslsocket_openssl.cpp(1430) : error C2146: syntax error : missing ';' before identifier 'wincert'
ssl\qsslsocket_openssl.cpp(1430) : error C2065: 'wincert' : undeclared identifier
ssl\qsslsocket_openssl.cpp(1430) : error C2065: 'X509_ASN_ENCODING' : undeclared identifier
ssl\qsslsocket_openssl.cpp(1430) : error C3861: 'CertCreateCertificateContext': identifier not found
ssl\qsslsocket_openssl.cpp(1431) : error C2065: 'wincert' : undeclared identifier
ssl\qsslsocket_openssl.cpp(1440) : error C2065: 'CERT_CHAIN_PARA' : undeclared identifier
ssl\qsslsocket_openssl.cpp(1440) : error C2146: syntax error : missing ';' before identifier 'parameters'
ssl\qsslsocket_openssl.cpp(1440) : error C2065: 'parameters' : undeclared identifier
ssl\qsslsocket_openssl.cpp(1441) : error C2065: 'parameters' : undeclared identifier
ssl\qsslsocket_openssl.cpp(1441) : error C2070: 'unknown-type': illegal sizeof operand
ssl\qsslsocket_openssl.cpp(1442) : error C2065: 'parameters' : undeclared identifier
ssl\qsslsocket_openssl.cpp(1442) : error C2228: left of '.cbSize' must have class/struct/union
        type is 'unknown-type'
ssl\qsslsocket_openssl.cpp(1442) : error C2070: 'unknown-type': illegal sizeof operand
ssl\qsslsocket_openssl.cpp(1444) : error C2065: 'parameters' : undeclared identifier
ssl\qsslsocket_openssl.cpp(1444) : error C2228: left of '.RequestedUsage' must have class/struct/union
        type is 'unknown-type'
ssl\qsslsocket_openssl.cpp(1444) : error C2228: left of '.dwType' must have class/struct/union
ssl\qsslsocket_openssl.cpp(1444) : error C2065: 'USAGE_MATCH_TYPE_AND' : undeclared identifier
ssl\qsslsocket_openssl.cpp(1445) : error C2065: 'parameters' : undeclared identifier
ssl\qsslsocket_openssl.cpp(1445) : error C2228: left of '.RequestedUsage' must have class/struct/union
        type is 'unknown-type'
ssl\qsslsocket_openssl.cpp(1445) : error C2228: left of '.Usage' must have class/struct/union
ssl\qsslsocket_openssl.cpp(1445) : error C2228: left of '.cUsageIdentifier' must have class/struct/union
ssl\qsslsocket_openssl.cpp(1446) : error C2065: 'szOID_PKIX_KP_SERVER_AUTH' : undeclared identifier
ssl\qsslsocket_openssl.cpp(1446) : error C2065: 'szOID_PKIX_KP_CLIENT_AUTH' : undeclared identifier
ssl\qsslsocket_openssl.cpp(1447) : error C2065: 'parameters' : undeclared identifier
ssl\qsslsocket_openssl.cpp(1447) : error C2228: left of '.RequestedUsage' must have class/struct/union
        type is 'unknown-type'
ssl\qsslsocket_openssl.cpp(1447) : error C2228: left of '.Usage' must have class/struct/union
ssl\qsslsocket_openssl.cpp(1447) : error C2228: left of '.rgpszUsageIdentifier' must have class/struct/union
ssl\qsslsocket_openssl.cpp(1453) : error C2065: 'PCCERT_CHAIN_CONTEXT' : undeclared identifier
ssl\qsslsocket_openssl.cpp(1453) : error C2146: syntax error : missing ';' before identifier 'chain'
ssl\qsslsocket_openssl.cpp(1453) : error C2065: 'chain' : undeclared identifier
ssl\qsslsocket_openssl.cpp(1456) : error C2065: 'wincert' : undeclared identifier
ssl\qsslsocket_openssl.cpp(1459) : error C2065: 'parameters' : undeclared identifier
ssl\qsslsocket_openssl.cpp(1462) : error C2065: 'chain' : undeclared identifier
ssl\qsslsocket_openssl.cpp(1454) : error C3861: 'CertGetCertificateChain': identifier not found
ssl\qsslsocket_openssl.cpp(1494) : error C2065: 'chain' : undeclared identifier
ssl\qsslsocket_openssl.cpp(1494) : error C2227: left of '->TrustStatus' must point to class/struct/union/generic type
        type is 'unknown-type'
ssl\qsslsocket_openssl.cpp(1494) : error C2228: left of '.dwErrorStatus' must have class/struct/union
ssl\qsslsocket_openssl.cpp(1495) : error C2065: 'CERT_TRUST_NO_ERROR' : undeclared identifier
ssl\qsslsocket_openssl.cpp(1495) : error C2065: 'chain' : undeclared identifier
ssl\qsslsocket_openssl.cpp(1495) : error C2227: left of '->cChain' must point to class/struct/union/generic type
        type is 'unknown-type'
ssl\qsslsocket_openssl.cpp(1496) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
ssl\qsslsocket_openssl.cpp(1496) : error C2146: syntax error : missing ';' before identifier 'finalChain'
ssl\qsslsocket_openssl.cpp(1496) : error C2065: 'finalChain' : undeclared identifier
ssl\qsslsocket_openssl.cpp(1496) : error C2065: 'chain' : undeclared identifier
ssl\qsslsocket_openssl.cpp(1496) : error C2227: left of '->rgpChain' must point to class/struct/union/generic type
        type is 'unknown-type'
ssl\qsslsocket_openssl.cpp(1496) : error C2227: left of '->cChain' must point to class/struct/union/generic type
        type is 'unknown-type'
ssl\qsslsocket_openssl.cpp(1499) : error C2065: 'finalChain' : undeclared identifier
ssl\qsslsocket_openssl.cpp(1499) : error C2227: left of '->TrustStatus' must point to class/struct/union/generic type
        type is 'unknown-type'
ssl\qsslsocket_openssl.cpp(1499) : error C2228: left of '.dwErrorStatus' must have class/struct/union
ssl\qsslsocket_openssl.cpp(1500) : error C2065: 'CERT_TRUST_NO_ERROR' : undeclared identifier
ssl\qsslsocket_openssl.cpp(1500) : error C2065: 'finalChain' : undeclared identifier
ssl\qsslsocket_openssl.cpp(1500) : error C2227: left of '->cElement' must point to class/struct/union/generic type
        type is 'unknown-type'
ssl\qsslsocket_openssl.cpp(1501) : error C2065: 'finalChain' : undeclared identifier
ssl\qsslsocket_openssl.cpp(1501) : error C2227: left of '->rgpElement' must point to class/struct/union/generic type
        type is 'unknown-type'
ssl\qsslsocket_openssl.cpp(1501) : error C2227: left of '->cElement' must point to class/struct/union/generic type
        type is 'unknown-type'
ssl\qsslsocket_openssl.cpp(1501) : error C2227: left of '->pCertContext' must point to class/struct/union/generic type
ssl\qsslsocket_openssl.cpp(1502) : error C2227: left of '->pbCertEncoded' must point to class/struct/union/generic type
ssl\qsslsocket_openssl.cpp(1502) : error C2065: 'finalChain' : undeclared identifier
ssl\qsslsocket_openssl.cpp(1502) : error C2227: left of '->rgpElement' must point to class/struct/union/generic type
        type is 'unknown-type'
ssl\qsslsocket_openssl.cpp(1502) : error C2227: left of '->cElement' must point to class/struct/union/generic type
        type is 'unknown-type'
ssl\qsslsocket_openssl.cpp(1502) : error C2227: left of '->pCertContext' must point to class/struct/union/generic type
ssl\qsslsocket_openssl.cpp(1502) : error C2227: left of '->cbCertEncoded' must point to class/struct/union/generic type
ssl\qsslsocket_openssl.cpp(1505) : error C2065: 'chain' : undeclared identifier
ssl\qsslsocket_openssl.cpp(1505) : error C3861: 'CertFreeCertificateChain': identifier not found
ssl\qsslsocket_openssl.cpp(1507) : error C2065: 'wincert' : undeclared identifier
ssl\qsslsocket_openssl.cpp(1507) : error C3861: 'CertFreeCertificateContext': identifier not found
qsslsocket_openssl_symbols.cpp
Generating Code...
NMAKE : fatal error U1077: '"C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\bin\x86_arm\cl.EXE"' : return code '0x2'
Stop.
NMAKE : fatal error U1077: '"C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\BIN\amd64\nmake.exe"' : return code '0x2'
Stop.
NMAKE : fatal error U1077: 'cd' : return code '0x2'
Stop.
NMAKE : fatal error U1077: 'cd' : return code '0x2'
Stop.
NMAKE : fatal error U1077: 'cd' : return code '0x2'
Stop.

在我看来,OpenSSl库存在问题。 有没有人知道我可以做些什么来解决这个问题?

1 个答案:

答案 0 :(得分:1)

我在iOS中使用过带有Qt5.5的OpenSSL(我在几个版本之前开始使用它,并且已经成功地推进了它。)我没有在Windows中尝试过,但我可能需要在某些时候,所以你的帖子让我担心!

无论如何,我已经使用了许多类似问题的库。看起来你现在有一堆重复的代码正在发生冲突。您需要排除部分来源。

一次关注其中一个。我建议从你的第一个错误开始:

create type address_type is object (a number);
create table addresses of address_type;
insert into addresses values(address_type(1));
commit;

create table venues
(
    venue_name VARCHAR2(30),
    address    REF address_type SCOPE IS addresses
);

insert into venues
values('Name', (select ref(addresses) from addresses addresses where a = 1));

显然,当你到达qsslsocket_winrt_p.h时,你已经定义了QSslSocket类。查看之前编译的文件列表。如果您打开它们或使用IDE搜索,它应该在那里。尝试从第一次或第二次尝试中“删除”有问题的代码块,通过在其周围添加预先指定的指令来定义类,即。 #define,#ifdef等

这可能需要一天的工作,但你应该能够最终筛选它......我去过那里!