Error C1854 : 객체 파일에서 선입 된 헤더를 작성하는 동안 형성된 정보를 덮어 쓸 수 없습니다.
-
09-09-2019 - |
문제
foo.cpp(33918) : fatal error C1854: cannot overwrite information formed
during creation of the precompiled header in object file: 'c:\somepath\foo.obj'
이것에 대해 MSDN에 컨설팅하는 것은 다음과 같은 정보를 제공합니다.
동일한 파일에 대한 /yc (precompiled header 만들기) 옵션을 지정한 후 /yu (사전 컴파일 된 헤더 사용) 옵션을 지정했습니다. 특정 선언 (예 : __declspec dllexport를 포함한 선언) 이이 사실을 유효하게 만듭니다.
이 경우 DLLEXPORT 및 사전 컴파일 헤더를 사용하고 있습니다. 전에 이것을 만나고 해결 방법을 알고 있습니까? 이 문제에 대해 약간의 빛을 비추는 모든 입력은 대단히 감사합니다.
감사
해결책
여기에서 답을 찾을 수 있다고 생각합니다. http://social.msdn.microsoft.com/forums/en-us/vclanguage/thread/B3AAA10FA-141B-4A03-934C-7E463F92B2A5/
기본적으로 stdafx.cpp 파일을 "사전 컴파일 된 헤더 만들기"로 설정하고 다른 모든 .CPP 파일을 "사전 컴파일 된 헤더 사용"으로 설정해야합니다.
다른 팁
나도이 문제가 있었다.
프리 컴파일러 헤더 출력 파일이 올바른 위치로 설정되어 있는지 확인하십시오. 광산은 실제로 올바른 위치에 출력되었지만 경로에 약간의 아티팩트가 있었기 때문에 읽는 데 문제가있었습니다.
내 솔루션은 .EXE 프로젝트뿐만 아니라 모든 DLL 프로젝트에서도 모든 미리 컴파일 된 헤더 설정을 신중하게 다시 확인하고 모든 헤더를 재현하는 것이 었습니다. 그 후 .exe 컴파일에서 오류가 사라졌습니다.