Параметр компиляции Visual Studio выделен серым цветом для одного файла cpp

Меня попросили помочь коллеге по поводу загадочной ошибки сборки в одном из проектов в общем решении. Ошибка компоновки происходит на этапе компоновки, конструктор класса, определенный в статической библиотеке (a.lib), не обнаруживается, когда он используется в библиотеке (b.lib), которая включает этот файл a.lib. После тщательного расследования я выяснил, что:

  1. Конструктор правильно определен в классе.
  2. Класс определяется в файле cpp, который принадлежит проекту.
  3. Если попытаться перейти к файлу cpp или конструктору класса с помощью intellisense, все пойдет как положено.

Файл vcxproj ClCompile ItemGroup:

...
<ClCompile Include="Source\CMYKOVBLab.cpp" />
<ClInclude Include="Source\CMYKOBGLab.cpp" />  <--- The file is here.
<ClCompile Include="Source\CMYKOVBRGB.cpp" />
...

Таким образом, то, что необходимо для связи библиотеки, есть, но ошибка связи сохраняется.

Одна странная вещь, которую я заметил, это то, что cpp с не найденным конструктором класса не может быть скомпилирован нажатием Ctrl-F7 или правой кнопки в a.lib. Эта опция недоступна, но только для этого конкретного файла. Более того, когда я собираю библиотеку a.lib, где этот файл должен быть скомпилирован, это не так, и поэтому объектный файл не создается.

компиляция файла cpp невозможна

В чем может быть причина? Как я могу это исправить?

Я использую Visual Studio Professional 2015 с обновлением 3.

2

Решение

В VS 2015 включаются файлы компиляции, определенные в.vcxproj файл проекта, как ожидается, будет в лексикографический порядок.

Это больше не нужно в VS 2017, но когда это не соблюдается, VS 2015 может создать такой хаос.

Ваш коллега имеет изменено вручную .vcxproj файл проекта для включения этого файла, но он не соблюдает лексикографический порядок. Вам нужно просто удалить файл из проекта а также добавить его снова. Visual Studio включит его в правильное место и ваша сборка будет успешной.

Надеюсь, что это может помочь другим людям.

1

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

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

По вопросам рекламы [email protected]