Поделиться через


Предупреждение компилятора (уровень 1) C4727

"PCH с именем pch_file с той же меткой времени, найденной в obj_file_1 и obj_file_2. Использование первого PCH.

Примечание.

В Visual Studio 2017 и более ранних версиях предварительно скомпилированные заголовки называются stdafx.h по умолчанию, а в Visual Studio 2019 и более поздних версий она называется pch.h по умолчанию.

C4727 возникает при компиляции нескольких компиляторов с помощью /Yc и где компилятор смог пометить все OBJ-файлы с одной меткой времени PCH.

Чтобы устранить проблему, скомпилируйте один исходный файл с помощью /Yc /c (создает pch) и другие компилируются отдельно с помощью /Yu /c (использует pch), а затем свяжите их вместе.

Таким образом, если вы сделали следующее и создает C4727:

cl /clr /GL a.cpp b.cpp c.cpp /Ycstdafx.h

Вместо этого сделайте следующее:

cl /clr /GL a.cpp /Ycstdafx.h /c

cl /clr /GL b.cpp c.cpp /Yustdafx.h /link a.obj

cl /clr /GL a.cpp b.cpp c.cpp /Ycpch.h

Вместо этого сделайте следующее:

cl /clr /GL a.cpp /Ycpch.h /c

cl /clr /GL b.cpp c.cpp /Yupch.h /link a.obj

Дополнительные сведения доступны здесь.