编译支持 OpenSSL 的 Windows Phone 8.1 Qt 5.5 时出现问题



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

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

在我的环境中,我使用:

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

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

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

C:Program Files (x86)Microsoft Visual Studio 12.0VCvcvarsall.bat
cd C:openssl
perl Configure no-asm no-hw no-dso VC-WINSTORE
msdo_winstore
mssetVSvars ws8.1arm
set LIBPATH=C:Program Files (x86)Microsoft SDKsWindows Phonev8.1ExtensionSDKsMicrosoft.VCLibs12.0ReferencesCommonConfigurationneutral;%LIBPATH%
nmake -f msnt.mak init
nmake -f msnt.mak

编译似乎很好。

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

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

为了编译Qt框架,我使用"VS2015 x86本机工具命令提示符",如 http://wiki.qt.io/WinRTBuild 中所述

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

configure -nomake examples -nomake tests -openssl -I C:include -L C:libopenssl -opensource -prefix C:Qt5.5.1 -confirm-license -xplatform winphone-arm-msvc2013 -release
nmake

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

...
Generating Code...
        cl -c -FIqt_pch.h -Yuqt_pch.h -Fp.pchreleaseQt5Network_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....includeQtNetwork -I....includeQtNetwork5.5.1 -I....includeQtNetwork5.5.1QtNetwork -Itmp -I..3rdpartyzlib -Ikernel -I....includeQtCore5.5.1 -I....includeQtCore5.5.1QtCore -I....includeQtCore -I.mocrelease -I....mkspecswinphone-arm-msvc2013 -Fo.objrelease @C:UsersgordonAppDataLocalTempnm609E.tmp
qasn1element.cpp
qssl.cpp
qsslcertificate.cpp
c:qt5.5srcqtbasesrcnetworksslqsslsocket_winrt_p.h(68) : error C2011: 'QSslSocketBackendPrivate' : 'class' type redefinition
        c:qt5.5srcqtbasesrcnetworksslqsslsocket_openssl_p.h(100) : see declaration of 'QSslSocketBackendPrivate'
sslqsslcertificate.cpp(572) : error C2027: use of undefined type 'QSslSocketBackendPrivate'
        c:qt5.5srcqtbasesrcnetworksslqsslsocket_openssl_p.h(100) : see declaration of 'QSslSocketBackendPrivate'
sslqsslcertificate.cpp(592) : error C2027: use of undefined type 'QSslSocketBackendPrivate'
        c:qt5.5srcqtbasesrcnetworksslqsslsocket_openssl_p.h(100) : see declaration of 'QSslSocketBackendPrivate'
qsslconfiguration.cpp
qsslcipher.cpp
qsslellipticcurve.cpp
qsslkey_p.cpp
qsslerror.cpp
qsslsocket.cpp
c:qt5.5srcqtbasesrcnetworksslqsslsocket_winrt_p.h(68) : error C2011: 'QSslSocketBackendPrivate' : 'class' type redefinition
        c:qt5.5srcqtbasesrcnetworksslqsslsocket_openssl_p.h(100) : see declaration of 'QSslSocketBackendPrivate'
sslqsslsocket.cpp(347) : error C2027: use of undefined type 'QSslSocketBackendPrivate'
        c:qt5.5srcqtbasesrcnetworksslqsslsocket_openssl_p.h(100) : see declaration of 'QSslSocketBackendPrivate'
sslqsslsocket.cpp(347) : fatal error C1903: unable to recover from previous error(s); stopping compilation
qsslpresharedkeyauthenticator.cpp
qsslcertificateextension.cpp
qsslcertificate_qt.cpp
c:qt5.5srcqtbasesrcnetworksslqsslcertificate_p.h(86) : error C3861: 'q_X509_free': identifier not found
sslqsslcertificate_qt.cpp(54) : error C2039: 'derData' : is not a member of 'QSslCertificatePrivate'
        c:qt5.5srcqtbasesrcnetworksslqsslcertificate_p.h(74) : see declaration of 'QSslCertificatePrivate'
        c:qt5.5srcqtbasesrcnetworksslqsslcertificate_p.h(74) : see declaration of 'QSslCertificatePrivate'
sslqsslcertificate_qt.cpp(76) : error C2039: 'subjectMatchesIssuer' : is not a member of 'QSslCertificatePrivate'
        c:qt5.5srcqtbasesrcnetworksslqsslcertificate_p.h(74) : see declaration of 'QSslCertificatePrivate'
sslqsslcertificate_qt.cpp(121) : error C2039: 'subjectAlternativeNames' : is not a member of 'QSslCertificatePrivate'
        c:qt5.5srcqtbasesrcnetworksslqsslcertificate_p.h(74) : see declaration of 'QSslCertificatePrivate'
...
sslqsslcertificate_qt.cpp(377) : error C2660: 'QDataStream::readRawData' : function does not take 1 arguments
sslqsslcertificate_qt.cpp(386) : error C3861: 'parseExtension': identifier not found
sslqsslcertificate_qt.cpp(388) : error C2065: 'extensions' : undeclared identifier
sslqsslcertificate_qt.cpp(398) : error C2065: 'subjectAlternativeNames' : undeclared identifier
sslqsslcertificate_qt.cpp(398) : error C2228: left of '.insert' must have class/struct/union
        type is 'unknown-type'
sslqsslcertificate_qt.cpp(400) : error C2065: 'subjectAlternativeNames' : undeclared identifier
sslqsslcertificate_qt.cpp(400) : error C2228: left of '.insert' must have class/struct/union
        type is 'unknown-type'
sslqsslcertificate_qt.cpp(410) : error C2065: 'derData' : undeclared identifier
sslqsslcertificate_qt.cpp(411) : error C2065: 'null' : undeclared identifier
sslqsslcertificate_qt.cpp(415) : error C2039: 'parseExtension' : is not a member of 'QSslCertificatePrivate'
        c:qt5.5srcqtbasesrcnetworksslqsslcertificate_p.h(74) : see declaration of 'QSslCertificatePrivate'
sslqsslcertificate_qt.cpp(505) : error C2248: 'QSslCertificateExtension::d' : cannot access private member declared in class 'QSslCertificateExtension'
        c:qt5.5srcqtbasesrcnetworksslqsslcertificateextension.h(69) : see declaration of 'QSslCertificateExtension::d'
        c:qt5.5srcqtbasesrcnetworksslqsslcertificateextension.h(50) : see declaration of 'QSslCertificateExtension'
sslqsslcertificate_qt.cpp(506) : error C2248: 'QSslCertificateExtension::d' : cannot access private member declared in class 'QSslCertificateExtension'
        c:qt5.5srcqtbasesrcnetworksslqsslcertificateextension.h(69) : see declaration of 'QSslCertificateExtension::d'
        c:qt5.5srcqtbasesrcnetworksslqsslcertificateextension.h(50) : see declaration of 'QSslCertificateExtension'
sslqsslcertificate_qt.cpp(507) : error C2248: 'QSslCertificateExtension::d' : cannot access private member declared in class 'QSslCertificateExtension'
        c:qt5.5srcqtbasesrcnetworksslqsslcertificateextension.h(69) : see declaration of 'QSslCertificateExtension::d'
        c:qt5.5srcqtbasesrcnetworksslqsslcertificateextension.h(50) : see declaration of 'QSslCertificateExtension'
sslqsslcertificate_qt.cpp(508) : error C2248: 'QSslCertificateExtension::d' : cannot access private member declared in class 'QSslCertificateExtension'
        c:qt5.5srcqtbasesrcnetworksslqsslcertificateextension.h(69) : see declaration of 'QSslCertificateExtension::d'
        c:qt5.5srcqtbasesrcnetworksslqsslcertificateextension.h(50) : see declaration of 'QSslCertificateExtension'
sslqsslcertificate_qt.cpp(509) : error C2248: 'QSslCertificateExtension::d' : cannot access private member declared in class 'QSslCertificateExtension'
        c:qt5.5srcqtbasesrcnetworksslqsslcertificateextension.h(69) : see declaration of 'QSslCertificateExtension::d'
        c:qt5.5srcqtbasesrcnetworksslqsslcertificateextension.h(50) : see declaration of 'QSslCertificateExtension'
qsslcertificate_winrt.cpp
c:qt5.5srcqtbasesrcnetworksslqsslcertificate_p.h(86) : error C3861: 'q_X509_free': identifier not found
sslqsslcertificate_winrt.cpp(98) : error C2039: 'derData' : is not a member of 'QSslCertificatePrivate'
        c:qt5.5srcqtbasesrcnetworksslqsslcertificate_p.h(74) : see declaration of 'QSslCertificatePrivate'
sslqsslcertificate_winrt.cpp(98) : error C2228: left of '.length' must have class/struct/union
        c:qt5.5srcqtbasesrcnetworksslqsslcertificate_p.h(74) : see declaration of 'QSslCertificatePrivate'
sslqsslcertificate_winrt.cpp(98) : error C2228: left of '.data' must have class/struct/union
sslqsslcertificate_winrt.cpp(98) : error C2660: 'ABI::Windows::Security::Cryptography::ICryptographicBufferStatics::CreateFromByteArray' : function does not take 2 arguments
qsslkey_qt.cpp
sslqsslkey_qt.cpp(117) : error C2039: 'Cipher' : is not a member of 'QSslKeyPrivate'
        c:qt5.5srcqtbasesrcnetworksslqsslkey_p.h(61) : see declaration of 'QSslKeyPrivate'
sslqsslkey_qt.cpp(117) : error C2065: 'Cipher' : undeclared identifier
sslqsslkey_qt.cpp(117) : error C2146: syntax error : missing ')' before identifier 'cipher'
sslqsslkey_qt.cpp(117) : error C2059: syntax error : ')'
sslqsslkey_qt.cpp(118) : error C2143: syntax error : missing ';' before '{'
sslqsslkey_qt.cpp(118) : error C2447: '{' : missing function header (old-style formal list?)
sslqsslkey_qt.cpp(146) : error C2065: 'derData' : undeclared identifier
sslqsslkey_qt.cpp(146) : error C2228: left of '.clear' must have class/struct/union
        type is 'unknown-type'
sslqsslkey_qt.cpp(147) : error C2065: 'keyLength' : undeclared identifier
sslqsslkey_qt.cpp(179) : error C2065: 'keyLength' : undeclared identifier
sslqsslkey_qt.cpp(189) : error C2065: 'keyLength' : undeclared identifier
sslqsslkey_qt.cpp(195) : error C2065: 'keyLength' : undeclared identifier
sslqsslkey_qt.cpp(213) : error C2065: 'keyLength' : undeclared identifier
sslqsslkey_qt.cpp(219) : error C2065: 'keyLength' : undeclared identifier
sslqsslkey_qt.cpp(232) : error C2065: 'keyLength' : undeclared identifier
sslqsslkey_qt.cpp(236) : error C2065: 'derData' : undeclared identifier
sslqsslkey_qt.cpp(252) : error C2065: 'Cipher' : undeclared identifier
sslqsslkey_qt.cpp(252) : error C2146: syntax error : missing ';' before identifier 'cipher'
sslqsslkey_qt.cpp(252) : error C2065: 'cipher' : undeclared identifier
sslqsslkey_qt.cpp(254) : error C2065: 'cipher' : undeclared identifier
sslqsslkey_qt.cpp(254) : error C2065: 'DesCbc' : undeclared identifier
sslqsslkey_qt.cpp(256) : error C2065: 'cipher' : undeclared identifier
sslqsslkey_qt.cpp(256) : error C2065: 'DesEde3Cbc' : undeclared identifier
sslqsslkey_qt.cpp(258) : error C2065: 'cipher' : undeclared identifier
sslqsslkey_qt.cpp(258) : error C2065: 'Rc2Cbc' : undeclared identifier
sslqsslkey_qt.cpp(265) : error C2065: 'cipher' : undeclared identifier
sslqsslkey_qt.cpp(266) : error C2065: 'cipher' : undeclared identifier
sslqsslkey_qt.cpp(266) : error C3861: 'decrypt': identifier not found
sslqsslkey_qt.cpp(273) : error C2065: 'keyLength' : undeclared identifier
sslqsslkey_qt.cpp(288) : error C2065: 'Cipher' : undeclared identifier
sslqsslkey_qt.cpp(288) : error C2146: syntax error : missing ';' before identifier 'cipher'
sslqsslkey_qt.cpp(288) : error C2065: 'cipher' : undeclared identifier
sslqsslkey_qt.cpp(288) : error C2065: 'DesEde3Cbc' : undeclared identifier
sslqsslkey_qt.cpp(289) : error C2065: 'cipher' : undeclared identifier
sslqsslkey_qt.cpp(290) : error C2065: 'cipher' : undeclared identifier
sslqsslkey_qt.cpp(290) : error C2065: 'derData' : undeclared identifier
sslqsslkey_qt.cpp(290) : error C3861: 'encrypt': identifier not found
sslqsslkey_qt.cpp(295) : error C2065: 'derData' : undeclared identifier
qsslkey_winrt.cpp
c:qt5.5srcqtbasesrcnetworksslqsslcertificate_p.h(86) : error C3861: 'q_X509_free': identifier not found
sslqsslkey_winrt.cpp(87) : error C2039: 'Cipher' : is not a member of 'QSslKeyPrivate'
        c:qt5.5srcqtbasesrcnetworksslqsslkey_p.h(61) : see declaration of 'QSslKeyPrivate'
sslqsslkey_winrt.cpp(87) : error C2065: 'Cipher' : undeclared identifier
sslqsslkey_winrt.cpp(87) : error C2923: 'QHash' : 'Cipher' is not a valid template type argument for parameter 'Key'
sslqsslkey_winrt.cpp(60) : error C2512: 'QHash' : no appropriate default constructor available
sslqsslkey_winrt.cpp(72) : error C2039: 'DesCbc' : is not a member of 'QSslKeyPrivate'
        c:qt5.5srcqtbasesrcnetworksslqsslkey_p.h(61) : see declaration of 'QSslKeyPrivate'
sslqsslkey_winrt.cpp(72) : error C2065: 'DesCbc' : undeclared identifier
sslqsslkey_winrt.cpp(72) : error C2660: 'ABI::Windows::Security::Cryptography::Core::ISymmetricKeyAlgorithmProviderStatics::OpenAlgorithm' : function does not take 1 arguments
sslqsslkey_winrt.cpp(75) : error C2039: 'DesEde3Cbc' : is not a member of 'QSslKeyPrivate'
        c:qt5.5srcqtbasesrcnetworksslqsslkey_p.h(61) : see declaration of 'QSslKeyPrivate'
sslqsslkey_winrt.cpp(75) : error C2065: 'DesEde3Cbc' : undeclared identifier
sslqsslkey_winrt.cpp(75) : error C2660: 'ABI::Windows::Security::Cryptography::Core::ISymmetricKeyAlgorithmProviderStatics::OpenAlgorithm' : function does not take 1 arguments
sslqsslkey_winrt.cpp(78) : error C2039: 'Rc2Cbc' : is not a member of 'QSslKeyPrivate'
        c:qt5.5srcqtbasesrcnetworksslqsslkey_p.h(61) : see declaration of 'QSslKeyPrivate'
sslqsslkey_winrt.cpp(78) : error C2065: 'Rc2Cbc' : undeclared identifier
sslqsslkey_winrt.cpp(78) : error C2660: 'ABI::Windows::Security::Cryptography::Core::ISymmetricKeyAlgorithmProviderStatics::OpenAlgorithm' : function does not take 1 arguments
sslqsslkey_winrt.cpp(92) : error C2039: 'Cipher' : is not a member of 'QSslKeyPrivate'
        c:qt5.5srcqtbasesrcnetworksslqsslkey_p.h(61) : see declaration of 'QSslKeyPrivate'
sslqsslkey_winrt.cpp(92) : error C2065: 'Cipher' : undeclared identifier
sslqsslkey_winrt.cpp(92) : error C2146: syntax error : missing ')' before identifier 'cipher'
sslqsslkey_winrt.cpp(92) : error C2059: syntax error : ')'
sslqsslkey_winrt.cpp(93) : error C2143: syntax error : missing ';' before '{'
sslqsslkey_winrt.cpp(93) : error C2447: '{' : missing function header (old-style formal list?)
sslqsslkey_winrt.cpp(146) : error C2039: 'decrypt' : is not a member of 'QSslKeyPrivate'
        c:qt5.5srcqtbasesrcnetworksslqsslkey_p.h(61) : see declaration of 'QSslKeyPrivate'
sslqsslkey_winrt.cpp(146) : error C2065: 'Cipher' : undeclared identifier
sslqsslkey_winrt.cpp(146) : error C2146: syntax error : missing ')' before identifier 'cipher'
sslqsslkey_winrt.cpp(146) : error C2059: syntax error : ')'
sslqsslkey_winrt.cpp(147) : error C2143: syntax error : missing ';' before '{'
sslqsslkey_winrt.cpp(147) : error C2447: '{' : missing function header (old-style formal list?)
sslqsslkey_winrt.cpp(151) : error C2039: 'encrypt' : is not a member of 'QSslKeyPrivate'
        c:qt5.5srcqtbasesrcnetworksslqsslkey_p.h(61) : see declaration of 'QSslKeyPrivate'
sslqsslkey_winrt.cpp(151) : error C2065: 'Cipher' : undeclared identifier
sslqsslkey_winrt.cpp(151) : error C2146: syntax error : missing ')' before identifier 'cipher'
sslqsslkey_winrt.cpp(151) : error C2059: syntax error : ')'
sslqsslkey_winrt.cpp(152) : error C2143: syntax error : missing ';' before '{'
sslqsslkey_winrt.cpp(152) : error C2447: '{' : missing function header (old-style formal list?)
qsslsocket_winrt.cpp
c:qt5.5srcqtbasesrcnetworksslqsslcertificate_p.h(86) : error C3861: 'q_X509_free': identifier not found
qsslellipticcurve_dummy.cpp
qsslcertificate_openssl.cpp
qsslcontext_openssl.cpp
sslqsslcontext_openssl.cpp(471) : error C2027: use of undefined type 'ssl_session_st'
        C:includeopenssl/ssl.h(352) : see declaration of 'ssl_session_st'
sslqsslcontext_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
sslqsslsocket_openssl.cpp(87) : error C2039: 'ptrCertOpenSystemStoreW' : is not a member of 'QSslSocketPrivate'
        c:qt5.5srcqtbasesrcnetworksslqsslsocket_p.h(97) : see declaration of 'QSslSocketPrivate'
sslqsslsocket_openssl.cpp(87) : error C2146: syntax error : missing ';' before identifier 'ptrCertOpenSystemStoreW'
sslqsslsocket_openssl.cpp(87) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
sslqsslsocket_openssl.cpp(88) : error C2039: 'ptrCertFindCertificateInStore' : is not a member of 'QSslSocketPrivate'
        c:qt5.5srcqtbasesrcnetworksslqsslsocket_p.h(97) : see declaration of 'QSslSocketPrivate'
sslqsslsocket_openssl.cpp(88) : error C2146: syntax error : missing ';' before identifier 'ptrCertFindCertificateInStore'
sslqsslsocket_openssl.cpp(88) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
sslqsslsocket_openssl.cpp(89) : error C2039: 'ptrCertCloseStore' : is not a member of 'QSslSocketPrivate'
        c:qt5.5srcqtbasesrcnetworksslqsslsocket_p.h(97) : see declaration of 'QSslSocketPrivate'
sslqsslsocket_openssl.cpp(89) : error C2146: syntax error : missing ';' before identifier 'ptrCertCloseStore'
sslqsslsocket_openssl.cpp(89) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
sslqsslsocket_openssl.cpp(549) : error C3861: 'LoadLibraryW': identifier not found
sslqsslsocket_openssl.cpp(556) : error C2146: syntax error : missing ';' before identifier 'GetProcAddress'
sslqsslsocket_openssl.cpp(557) : error C2146: syntax error : missing ';' before identifier 'GetProcAddress'
sslqsslsocket_openssl.cpp(558) : error C2146: syntax error : missing ';' before identifier 'GetProcAddress'
sslqsslsocket_openssl.cpp(749) : error C2065: 'HCERTSTORE' : undeclared identifier
sslqsslsocket_openssl.cpp(749) : error C2146: syntax error : missing ';' before identifier 'hSystemStore'
sslqsslsocket_openssl.cpp(749) : error C2065: 'hSystemStore' : undeclared identifier
sslqsslsocket_openssl.cpp(757) : error C2065: 'hSystemStore' : undeclared identifier
sslqsslsocket_openssl.cpp(757) : error C2064: term does not evaluate to a function taking 2 arguments
sslqsslsocket_openssl.cpp(759) : error C2065: 'hSystemStore' : undeclared identifier
sslqsslsocket_openssl.cpp(760) : error C2065: 'PCCERT_CONTEXT' : undeclared identifier
sslqsslsocket_openssl.cpp(760) : error C2146: syntax error : missing ';' before identifier 'pc'
sslqsslsocket_openssl.cpp(760) : error C2065: 'pc' : undeclared identifier
sslqsslsocket_openssl.cpp(762) : error C2065: 'pc' : undeclared identifier
sslqsslsocket_openssl.cpp(762) : error C2065: 'hSystemStore' : undeclared identifier
sslqsslsocket_openssl.cpp(762) : error C2065: 'X509_ASN_ENCODING' : undeclared identifier
sslqsslsocket_openssl.cpp(762) : error C2065: 'CERT_FIND_ANY' : undeclared identifier
sslqsslsocket_openssl.cpp(763) : error C2065: 'pc' : undeclared identifier
sslqsslsocket_openssl.cpp(765) : error C2065: 'pc' : undeclared identifier
sslqsslsocket_openssl.cpp(765) : error C2227: left of '->pbCertEncoded' must point to class/struct/union/generic type
        type is 'unknown-type'
sslqsslsocket_openssl.cpp(765) : error C2227: left of '->cbCertEncoded' must point to class/struct/union/generic type
        type is 'unknown-type'
sslqsslsocket_openssl.cpp(769) : error C2065: 'hSystemStore' : undeclared identifier
sslqsslsocket_openssl.cpp(1430) : error C2065: 'PCCERT_CONTEXT' : undeclared identifier
sslqsslsocket_openssl.cpp(1430) : error C2146: syntax error : missing ';' before identifier 'wincert'
sslqsslsocket_openssl.cpp(1430) : error C2065: 'wincert' : undeclared identifier
sslqsslsocket_openssl.cpp(1430) : error C2065: 'X509_ASN_ENCODING' : undeclared identifier
sslqsslsocket_openssl.cpp(1430) : error C3861: 'CertCreateCertificateContext': identifier not found
sslqsslsocket_openssl.cpp(1431) : error C2065: 'wincert' : undeclared identifier
sslqsslsocket_openssl.cpp(1440) : error C2065: 'CERT_CHAIN_PARA' : undeclared identifier
sslqsslsocket_openssl.cpp(1440) : error C2146: syntax error : missing ';' before identifier 'parameters'
sslqsslsocket_openssl.cpp(1440) : error C2065: 'parameters' : undeclared identifier
sslqsslsocket_openssl.cpp(1441) : error C2065: 'parameters' : undeclared identifier
sslqsslsocket_openssl.cpp(1441) : error C2070: 'unknown-type': illegal sizeof operand
sslqsslsocket_openssl.cpp(1442) : error C2065: 'parameters' : undeclared identifier
sslqsslsocket_openssl.cpp(1442) : error C2228: left of '.cbSize' must have class/struct/union
        type is 'unknown-type'
sslqsslsocket_openssl.cpp(1442) : error C2070: 'unknown-type': illegal sizeof operand
sslqsslsocket_openssl.cpp(1444) : error C2065: 'parameters' : undeclared identifier
sslqsslsocket_openssl.cpp(1444) : error C2228: left of '.RequestedUsage' must have class/struct/union
        type is 'unknown-type'
sslqsslsocket_openssl.cpp(1444) : error C2228: left of '.dwType' must have class/struct/union
sslqsslsocket_openssl.cpp(1444) : error C2065: 'USAGE_MATCH_TYPE_AND' : undeclared identifier
sslqsslsocket_openssl.cpp(1445) : error C2065: 'parameters' : undeclared identifier
sslqsslsocket_openssl.cpp(1445) : error C2228: left of '.RequestedUsage' must have class/struct/union
        type is 'unknown-type'
sslqsslsocket_openssl.cpp(1445) : error C2228: left of '.Usage' must have class/struct/union
sslqsslsocket_openssl.cpp(1445) : error C2228: left of '.cUsageIdentifier' must have class/struct/union
sslqsslsocket_openssl.cpp(1446) : error C2065: 'szOID_PKIX_KP_SERVER_AUTH' : undeclared identifier
sslqsslsocket_openssl.cpp(1446) : error C2065: 'szOID_PKIX_KP_CLIENT_AUTH' : undeclared identifier
sslqsslsocket_openssl.cpp(1447) : error C2065: 'parameters' : undeclared identifier
sslqsslsocket_openssl.cpp(1447) : error C2228: left of '.RequestedUsage' must have class/struct/union
        type is 'unknown-type'
sslqsslsocket_openssl.cpp(1447) : error C2228: left of '.Usage' must have class/struct/union
sslqsslsocket_openssl.cpp(1447) : error C2228: left of '.rgpszUsageIdentifier' must have class/struct/union
sslqsslsocket_openssl.cpp(1453) : error C2065: 'PCCERT_CHAIN_CONTEXT' : undeclared identifier
sslqsslsocket_openssl.cpp(1453) : error C2146: syntax error : missing ';' before identifier 'chain'
sslqsslsocket_openssl.cpp(1453) : error C2065: 'chain' : undeclared identifier
sslqsslsocket_openssl.cpp(1456) : error C2065: 'wincert' : undeclared identifier
sslqsslsocket_openssl.cpp(1459) : error C2065: 'parameters' : undeclared identifier
sslqsslsocket_openssl.cpp(1462) : error C2065: 'chain' : undeclared identifier
sslqsslsocket_openssl.cpp(1454) : error C3861: 'CertGetCertificateChain': identifier not found
sslqsslsocket_openssl.cpp(1494) : error C2065: 'chain' : undeclared identifier
sslqsslsocket_openssl.cpp(1494) : error C2227: left of '->TrustStatus' must point to class/struct/union/generic type
        type is 'unknown-type'
sslqsslsocket_openssl.cpp(1494) : error C2228: left of '.dwErrorStatus' must have class/struct/union
sslqsslsocket_openssl.cpp(1495) : error C2065: 'CERT_TRUST_NO_ERROR' : undeclared identifier
sslqsslsocket_openssl.cpp(1495) : error C2065: 'chain' : undeclared identifier
sslqsslsocket_openssl.cpp(1495) : error C2227: left of '->cChain' must point to class/struct/union/generic type
        type is 'unknown-type'
sslqsslsocket_openssl.cpp(1496) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
sslqsslsocket_openssl.cpp(1496) : error C2146: syntax error : missing ';' before identifier 'finalChain'
sslqsslsocket_openssl.cpp(1496) : error C2065: 'finalChain' : undeclared identifier
sslqsslsocket_openssl.cpp(1496) : error C2065: 'chain' : undeclared identifier
sslqsslsocket_openssl.cpp(1496) : error C2227: left of '->rgpChain' must point to class/struct/union/generic type
        type is 'unknown-type'
sslqsslsocket_openssl.cpp(1496) : error C2227: left of '->cChain' must point to class/struct/union/generic type
        type is 'unknown-type'
sslqsslsocket_openssl.cpp(1499) : error C2065: 'finalChain' : undeclared identifier
sslqsslsocket_openssl.cpp(1499) : error C2227: left of '->TrustStatus' must point to class/struct/union/generic type
        type is 'unknown-type'
sslqsslsocket_openssl.cpp(1499) : error C2228: left of '.dwErrorStatus' must have class/struct/union
sslqsslsocket_openssl.cpp(1500) : error C2065: 'CERT_TRUST_NO_ERROR' : undeclared identifier
sslqsslsocket_openssl.cpp(1500) : error C2065: 'finalChain' : undeclared identifier
sslqsslsocket_openssl.cpp(1500) : error C2227: left of '->cElement' must point to class/struct/union/generic type
        type is 'unknown-type'
sslqsslsocket_openssl.cpp(1501) : error C2065: 'finalChain' : undeclared identifier
sslqsslsocket_openssl.cpp(1501) : error C2227: left of '->rgpElement' must point to class/struct/union/generic type
        type is 'unknown-type'
sslqsslsocket_openssl.cpp(1501) : error C2227: left of '->cElement' must point to class/struct/union/generic type
        type is 'unknown-type'
sslqsslsocket_openssl.cpp(1501) : error C2227: left of '->pCertContext' must point to class/struct/union/generic type
sslqsslsocket_openssl.cpp(1502) : error C2227: left of '->pbCertEncoded' must point to class/struct/union/generic type
sslqsslsocket_openssl.cpp(1502) : error C2065: 'finalChain' : undeclared identifier
sslqsslsocket_openssl.cpp(1502) : error C2227: left of '->rgpElement' must point to class/struct/union/generic type
        type is 'unknown-type'
sslqsslsocket_openssl.cpp(1502) : error C2227: left of '->cElement' must point to class/struct/union/generic type
        type is 'unknown-type'
sslqsslsocket_openssl.cpp(1502) : error C2227: left of '->pCertContext' must point to class/struct/union/generic type
sslqsslsocket_openssl.cpp(1502) : error C2227: left of '->cbCertEncoded' must point to class/struct/union/generic type
sslqsslsocket_openssl.cpp(1505) : error C2065: 'chain' : undeclared identifier
sslqsslsocket_openssl.cpp(1505) : error C3861: 'CertFreeCertificateChain': identifier not found
sslqsslsocket_openssl.cpp(1507) : error C2065: 'wincert' : undeclared identifier
sslqsslsocket_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.0VCbinx86_armcl.EXE"' : return code '0x2'
Stop.
NMAKE : fatal error U1077: '"C:Program Files (x86)Microsoft Visual Studio 14.0VCBINamd64nmake.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 库有问题。有没有人知道我能做些什么来解决这个问题?

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

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

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

c:qt5.5srcqtbasesrcnetworksslqsslsocket_winrt_p.h(68) : error C2011: 'QSslSocketBackendPrivate' : 'class' type redefinition
        c:qt5.5srcqtbasesrcnetworksslqsslsocket_openssl_p.h(100) : see declaration of 'QSslSocketBackendPrivate'

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

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

相关内容

  • 没有找到相关文章

最新更新