2015-07-17 5 views
7

Я пытаюсь построить Facebook безрассудство в Visual Studio 2015 RC свободно, следуя инструкциям, содержащимся здесь: https://github.com/jbandela/folly/tree/vc11Визуальные ошибки Студия Вкомпилировать станд библиотеки

Я надеюсь, что с 2015 по расширенной поддержке C++ 11 я могу имеют более легкое время, чем это было возможно раньше. Я работаю над проблемами на достойном клипе, но в настоящее время я получаю набор ошибок компиляции, которые мне не имеют смысла. Вот вершина выхода компиляции с первой ошибки:

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 '<' 

Вот источник приносит мне расположения этой ошибки, снова в xstring в станд имен:

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> 
{ 

Другой пример ошибки я получаю:

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

источник:

class logic_error 
    : public _XSTD exception 
    { 

Я смущен тем, как эти и другие ошибки могут возникнуть в отношении самой библиотеки std. Я обычно строю из Linux/g ++, поэтому я не знаком с средой сборки Visual Studio. Возможно, я что-то делаю неправильно. Что может быть причиной таких ошибок?


Обновление 1

Добавление большего количества информации. Я воспроизвел это без повышения, поэтому предупреждение «Неизвестная версия компилятора» исчезнет. Я также получил больше выход из сборника:

 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

Эти ошибки происходят с и без опции скомпилированного заголовка включена.

+0

В выводе сборки я заметил сообщение об ошибке «Неизвестная версия компилятора ...».Можете ли вы проверить свои файлы заголовков, какое условие вызывает это сообщение? –

+0

Спасибо за комментарий. Это сообщение о версии компилятора появилось из boost. Я читал онлайн, что это безобидно, но я переработал вещи в проекте, поэтому в настоящее время он не компилируется с повышением, чтобы получить это сообщение из изображения. Посмотрите мое обновление ниже горизонтальной линии. Теперь эта заметка уходит, но я все еще получаю ошибку. – firebush

+0

Какую версию Windows вы настраиваете? Можете ли вы попробовать добавить «/ D WIN32_WINNT = 0x0601» в свою командную строку для Windows 7? Подробнее см. В разделе [msdn] (https://msdn.microsoft.com/en-us/library/windows/desktop/aa383745%28v=vs.85%29.aspx#setting_winver_or__win32_winnt). –

ответ

1

Это сообщение:

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

испускается один из файлов заголовки подталкивания. Для Boost требуется определенная версия VC++, которая находится в этом случае 11.0, что соответствует VS 2012. Вероятно, это причина, по которой вы получаете все эти ошибки. Вам необходимо загрузить Visual Studio 2012, а затем следовать инструкциям из указанной вами ссылки.

+0

Как упоминалось в сообщении (см. Обновление 1), я получил эти std-ошибки даже после удаления увеличения изображения. – firebush

+0

@firebush Я это знаю. Тем не менее, VS 2012 требуется для успешной компиляции кода. –

0

Вы уверены, что заголовок dll является самым последним; они часто обновляются. У меня есть опыт этого при работе на нескольких системах с одинаковой сборкой. Дополнительная проверка будет заключаться в том, чтобы добавить std :: в начале вашего вызова библиотеки, просто чтобы убедиться - таким образом вы можете легко проверить погоду, это dll или ваше правописание.

Также проверьте, если вы получаете ошибку набора инструментов «v120» или «v140», это означает, что вы неправильно используете версию VS.

Другим методом является включение файлов VC lib в качестве локального «заголовка», обеспечивающего, по меньшей мере, соединение с компилятором.

Я надеюсь, что это поможет