2015-07-17 17 views
7

sto cercando di costruire Facebook follia in Visual Studio 2015 RC liberamente seguendo le indicazioni fornite qui: https://github.com/jbandela/folly/tree/vc11di Visual Studio errori di compilazione nella libreria std

Sono fiducioso che con ampliato C++ 11 2015 supporto del I maggio avere un tempo più facile di quello che era possibile prima. Ho lavorato sui problemi con una clip decente, ma al momento sto ricevendo un insieme di errori di compilazione che non hanno senso per me. Ecco la parte superiore dell'output di compilazione con il primo errore:

2>------ Build started: Project: folly, Configuration: Debug Win32 ------ 
2> pch.cpp 
2> Unknown compiler version - please run the configure tests and report the results 
2>c:\program files (x86)\microsoft visual studio 14.0\vc\include\xstring(26): error C2143: syntax error: missing ',' before '<' 
2>c:\program files (x86)\microsoft visual studio 14.0\vc\include\xstring(26): error C2143: syntax error: missing ',' before '<' 

Ecco la fonte che mi porta al per l'ubicazione di tale errore, ancora una volta in xstring nel namespace std:

template<class _Mystr> 
class _String_const_iterator 
    : public _Iterator012<random_access_iterator_tag, // <---- line 26 
     typename _Mystr::value_type, 
     typename _Mystr::difference_type, 
     typename _Mystr::const_pointer, 
     typename _Mystr::const_reference, 
     _Iterator_base> 
{ 

Un altro esempio di un errore sto ottenendo:

C2039 'exception': is not a member of 'std' folly c:\program files (x86)\microsoft visual studio 14.0\vc\include\stdexcept 27 

La fonte:

class logic_error 
    : public _XSTD exception 
    { 

Sono confuso da come questi e gli altri 219 errori possono sorgere riguardo alla libreria std stessa. Generalmente vengo da Linux/g ++, quindi non ho familiarità con l'ambiente di sviluppo di Visual Studio. Potrei fare qualcosa di semplice sbagliato. Quale può essere la causa di errori come questo?


Update 1

Aggiunta di ulteriori informazioni. L'ho riprodotto senza boost, quindi l'avviso "Versione del compilatore sconosciuto" scompare. Ho anche avuto più uscita dalla compilazione:

 Microsoft (R) C/C++ Optimizing Compiler Version 19.00.22816 for x86 
    Copyright (C) Microsoft Corporation. All rights reserved. 

    cl /c /I"C:\Users\myname\Documents\Visual Studio 2015\Projects\folly\folly\folly\folly" /I"C:\Users\myname\Documents\Visual Studio 2015\Projects\folly\folly\\" /I"Generated Files\\" /IDebug\ /ZI /ZW /ZW:nostdlib /W3 /WX- /sdl /MP /Od /Oy- /D _VARIADIC_MAX=10 /D FOLLY_NO_CONFIG /D _TIMESPEC_DEFINED /D FOLLY_HAVE_STD__IS_TRIVIALLY_COPYABLE /D _UNICODE /D UNICODE /D _DEBUG /D WINAPI_FAMILY=WINAPI_FAMILY_APP /D __WRL_NO_DEFAULT_LIB__ /Gm- /EHsc /RTC1 /MDd /GS /fp:precise /Zc:wchar_t /Zc:forScope /Zc:inline /Yc"pch.h" /Fp"Debug\folly.pch" /Fo"Debug\\" /Fd"Debug\vc140.pdb" /Gd /TP /wd4453 /wd28204 /FU"C:\Program Files (x86)\Microsoft SDKs\Windows Kits\10\ExtensionSDKs\Microsoft.VCLibs\14.0\References\CommonConfiguration\neutral\platform.winmd" /FU"C:\Program Files (x86)\Windows Kits\10\References\Windows.Foundation.FoundationContract\1.0.0.0\Windows.Foundation.FoundationContract.winmd" /FU"C:\Program Files (x86)\Windows Kits\10\References\Windows.Foundation.UniversalApiContract\1.0.0.0\Windows.Foundation.UniversalApiContract.winmd" /FU"C:\Program Files (x86)\Windows Kits\10\References\Windows.Networking.Connectivity.WwanContract\1.0.0.0\Windows.Networking.Connectivity.WwanContract.winmd" /analyze- /errorReport:prompt /bigobj pch.cpp 

    pch.cpp 
1>c:\program files (x86)\microsoft visual studio 14.0\vc\include\xstring(26): error C2143: syntax error: missing ',' before '<' 
    c:\program files (x86)\microsoft visual studio 14.0\vc\include\xstring(266): note: see reference to class template instantiation 'std::_String_const_iterator<_Mystr>' being compiled 
1>c:\program files (x86)\microsoft visual studio 14.0\vc\include\xstring(27): error C2518: keyword 'typename' illegal in base class list; ignored 
1>c:\program files (x86)\microsoft visual studio 14.0\vc\include\xstring(28): error C2518: keyword 'typename' illegal in base class list; ignored 
1>c:\program files (x86)\microsoft visual studio 14.0\vc\include\xstring(29): error C2518: keyword 'typename' illegal in base class list; ignored 
... 

Update 2

Questi errori si verificano con e senza l'opzione di intestazione precompilata attivata.

+0

Nell'output di build, ho notato il messaggio di errore "Versione del compilatore sconosciuto ...".Puoi controllare i tuoi file di intestazione quale condizione attiva questo messaggio? –

+0

Grazie per il commento. Quel messaggio sulla versione del compilatore proveniva da boost. Ho letto online che questo è innocuo, ma ho rielaborato le cose nel progetto in modo che al momento non stia compilando una spinta per far uscire quel messaggio dall'immagine. Vedi il mio aggiornamento sotto la linea orizzontale. Ora quella nota scompare, ma sto ancora ricevendo l'errore. – firebush

+0

Quale versione di Windows hai scelto come target? Puoi provare ad aggiungere "/ D WIN32_WINNT = 0x0601" alla tua riga di comando per scegliere come target Windows 7? Vedere [msdn] (https://msdn.microsoft.com/en-us/library/windows/desktop/aa383745%28v=vs.85%29.aspx#setting_winver_or__win32_winnt) per i dettagli. –

risposta

1

Questo messaggio:

Unknown compiler version - please run the configure tests and report the results

viene emesso da uno dei file di intestazione spinta. Boost richiede una versione specifica di VC++, che è in questo caso 11.0 che corrisponde a VS 2012. Questo è probabilmente il motivo per cui stai ricevendo tutti questi errori. Devi scaricare Visual Studio 2012 e quindi seguire le istruzioni dal link che hai menzionato.

+0

Come menzionato nel post (vedi Aggiornamento 1), ho ricevuto questi errori di std anche dopo aver rimosso la spinta dall'immagine. – firebush

+0

@firebush Lo so. Ancora, VS 2012 è richiesto per compilare correttamente il codice. –

0

Si è verificato che le dll di intestazione siano le più recenti; sono spesso aggiornati. Ne ho esperienza quando è in esecuzione su più sistemi con la stessa build. Un ulteriore controllo sarebbe quello di aggiungere std :: all'inizio della chiamata della libreria, solo per essere sicuri - in questo modo è possibile testare facilmente il tempo è la dll o l'ortografia.

Verificare inoltre se si sta ricevendo l'errore "v120" o "v140", questo indica se si utilizza erroneamente una versione di VS.

Un altro metodo consiste nell'includere i file lib VC come "intestazione" locale, assicurando almeno la connessione del compilatore.

Spero che questo aiuti

Problemi correlati