我正在尝试为Windows Phone 8.1构buildQt 5.5。 目前我正在使用Qt5框架开发一个应用程序。 该应用程序在iOS和Android上运行良好。 现在我也想支持Windows Phone。
在应用程序中,我使用OpenSSL API来创build证书签名请求和相应的密钥对。 我也使用QSslSocket。 所以我需要用OpenSSL支持来编译Qt。
在我的环境中,我使用:
对于Windows Phone,我从Microsoft编译OpenSSL( https://github.com/Microsoft/openssl commit 632474b204aa5fd305e30ca851f1a8c09563dbc3)
为了编译OpenSSL,我使用了Command Shell并执行以下命令(从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框架,我使用了http://wiki.qt.io/WinRTBuild中提到的“VS2015 x86本机工具命令提示符”
然后在C:\ Qt \ 5.5 \ Src中执行以下两个命令:
configure -nomake examples -nomake tests -openssl -IC:\include -LC:\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库有一些问题。 有没有人有线索我可以做什么来解决这个问题?
我在iOS中使用了Qt5.5中的OpenSSL(我之前开始使用几个版本,并且已经成功地向前推进了。)我还没有在Windows中尝试过,但是我可能需要某些时候,张贴后担心我!
无论如何,我已经使用了一些有类似问题的图书馆开始。 看起来你现在有一堆重复的代码正在碰撞。 您需要排除部分来源。
同时关注其中的一个。 我建议从你的第一个错误开始:
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'
显然,到了qsslsocket_winrt_p.h的时候,你已经定义了QSslSocket类。 查看之前编译的文件列表。 它应该在那里,如果你打开它们或搜索你的IDE。 尝试从第一次或第二次试图通过在其周围添加预编译器指令来定义类,即“去除”有问题的代码块。 #define,#ifdef等
这可能需要一天的工作,但是你最终应该能够筛选出来……我去过那里了!