ошибка MSB6006: & quot; CL.exe & quot; выход с кодом 1 после добавления шаблонной функции или класса

Задавая этот вопрос заранее, потому что не так много можно найти об этом коде ошибки. Решить это довольно тривиально, но диагностирование стоило мне много времени, потому что не выдается правильное сообщение об ошибке.

Так что же случилось?

  • Я добавил шаблонные функции в свой проект
  • Теперь, когда проект компилируется, появляется сообщение о том, что CL.exe была проблема и должна быть закрыта
  • Visual Studio прерывает компиляцию с error MSB6006: "CL.exe" exited with code 1

Проблема была в синтаксических ошибках в моих шаблонных функциях. Кто бы мог догадаться об этом.

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

Шаблонные функции были включены в заголовок .cpp, однако их полное определение в заголовке не имело никакого значения.

// foo.h

template <typename T>
void foo();

...

#include "foo.cpp"// foo.cpp

template <typename T>
void foo()
{
...
}

0

Решение

Сначала вам нужно скомпилировать все .cpp файлы, которые включают шаблонные функции отдельно (выберите один в проводнике проекта, щелкните правой кнопкой мыши и «скомпилируйте»).

Для меня первый намек на то, что некоторые из них скомпилированы, а для других cl.exe разбился.

Следующим шагом было создание bogus.cpp файл только с одной функцией, где я один за другим добавил вызовы к каждой созданной мной шаблонной функции. После добавления: перекомпилируйте. Это шло хорошо, пока я не добрался до неисправного, теперь bogus.cppтакже разбился cl.exe, Джекпот.

Последней задачей было исправление синтаксической ошибки, которая раздражает без сообщений об ошибках, но как только это будет сделано, bogus.cpp скомпилирует снова. Вернитесь к добавлению дополнительных вызовов функций, пока все не будет рассмотрено.

Надеюсь, я смогу помочь.

2

Другие решения

Других решений пока нет …