none
Ошибка сборки: MSB6006 CL.exe завершилась с кодом 2 RRS feed

  • Общие обсуждения

  • Поиск, к сожалению, дал только один результат, который вообще по другому приложению :( Собираю проект, выходит следующее:

    c:\program files (x86)\microsoft visual studio 14.0\vc\include\xtree(1682): warning C4503: '__LINE__Var' : decorated name length exceeded, name was truncated
    1>  INTERNAL COMPILER ERROR in 'C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin\CL.exe'
    1>      Please choose the Technical Support command on the Visual C++
    1>      Help menu, or open the Technical Support help file for more information
    1>C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V140\Microsoft.CppCommon.targets(356,5): error MSB6006: "CL.exe" завершилась с кодом 2.

    Всё бы ничего, но варнинг указывает на файл C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\include\xtree, правка которого вручную не даёт никаких результатов. Отдельно поиск по предупреждению с этим кодом идёт, а вот по сообщению MSB6006 поиск не рулит. В чём может быть проблема?

    27 июня 2017 г. 8:03

Все ответы

  • Возьмите за правило включать собственные заголовочные файлы ПОСЛЕ стандартных, чтобы не получать подобных "непонятных" ошибок.

    А редактировать файлы стандартной библиотеки вообще нельзя, иначе получите неработоспособный компилятор.


    Если сообщение помогло Вам, пожалуйста, не забудьте отметить его как ответ данной темы. Удачи в программировании!

    27 июня 2017 г. 10:16
  • проверил. Теперь в том месте, где возникает описанная проблема, все стандартные библиотеки инклюдятся ПЕРЕД собственными заколовочными файлами. Даже по вложенности проверил. Но ошибка всё равно осталась. Всё, что смог получить - либо вылезает ошибка компиляции (если закомментирована какая-то строка кода), либо вылезает ошибка из заголовка этого вопроса. По сиентаксису описания всё вроде правильно. Привожу код, на котором оно отловилось:
    #pragma once
    #include <string>
    #include "common.h"
    
    
    namespace ddd
    {
    	struct ImageResource
    	{
    		ImageResource() : id(0), name(""), size(0), data(0) {}
    		virtual ~ImageResource() { if (size && data) free(data); }
    		ushort		id;
    		std::string	name;
    		int			size;
    		void*		data;
    	};
    }


    Здесь ushort объявлено в файле common.h следующим образом:
    typedef unsigned short ushort;
    При комментировании любой переменной внутри структуры предупреждение C4503 и следующая за ним ошибка MSB6006 пропадают, появляются другие, вполне логичные ошибки. Странно было бы так вести себя на обычное объявление структуры внутри пространства имени. Или я что-то не вижу тут?

    • Изменено Roman_z 27 июня 2017 г. 10:39
    27 июня 2017 г. 10:36
  • Выложите проект куда-нибудь. Я посмотрю.

    Если сообщение помогло Вам, пожалуйста, не забудьте отметить его как ответ данной темы. Удачи в программировании!

    27 июня 2017 г. 10:43
  • К сожалению, выложить проект возможности нет.
    27 июня 2017 г. 14:29
  • Тогда хотя бы приведите ПОЛНЫЙ текст файла common.h и текст исходного файла от начала до строки с ошибкой.

    Если сообщение помогло Вам, пожалуйста, не забудьте отметить его как ответ данной темы. Удачи в программировании!

    28 июня 2017 г. 5:42
  • К сожалению, не увидел сообщение.
    проверка в MinGW показала на другие ошибки: в частности, в одном из модулей (как раз в том, который компилировался перед "вылетом2 компилятора с ошибкой 2) была перепутана раскладка в имени переменных, и вместо латинской c стояла русская с. Исправил - проект построился.