반응형

오류	C2857	/Ycpch.h 명령줄 옵션과 함께 지정한 '#include' 문이 소스 파일에 없습니다.

 

오늘 프로그래밍 도중에 이런 오류가 떴다..

일단 나의 경우에는 파일 분할 때문에 정리할려고 include, source 폴더를 만들고 거기에 있는 것을 가져오는 방식으로 구현할려고 했다.

그런데 이런 문제가 발생해서 검색해보니.. 모든 사람들이 그냥 미리 컴파일 된 헤더를 비활성화 하라고 한다..

나는 미리 컴파일 된 헤더를 활성화 시킬려고 하는건데..

 

아무튼 원인은 잘 모르겠지만

#include "pch.h" <- *.h 파일
#include "../include/pch.h" <- *.cpp 파일

각 파일에는 위에 적힌 대로 있다. 

그런데 문제는

이 미리 컴파일 된 헤더 파일 이름이 pch.h로만 되어있는데 저게 그대로 include가 되어있는지를 감지하고 안되어있으면 저런 오류를 뱉어내는 것 같다.

그래서 미리 컴파일 된 헤더 파일 이름을 ../include/pch.h로 해봐도 .h 파일 쪽에 문제가 있을테니.. 할 수 있는 방법은 없었다.

 

그러다가 생각난게 다른 라이브러리를 연결할 때 C/C++일반에서 추가 포함 디렉터리를 사용해야한다는게 생각나서 include 폴더 경로를 C/C++일반추가 포함 디렉터리에 추가를 한 후에 이렇게 하면 어차피 ../include 같은건 자동으로 되니깐 .cpp 파일에서 모두 수정하고 실행하니 해결되었다!

$(ProjectDir)\include

위에 이건 프로젝트 경로 안의 include 폴더를 지정하도록 하는 그런거다.

 

그리고 이런 오류가 뜨는 경우도 있는데 그냥 이건 pch.cpp 파일이나 stdafx.cpp 파일의 속성에서 

"사용(/Yu)"로 되어있을 텐데 "만들기(/Yc)"로 안해서 이다. "만들기(/Yc)"로 변경해주면 끝

 

그리고 $(ProjectDir) 같은건 여기에 보면 잘 설명 되어있다.

https://learn.microsoft.com/en-us/cpp/build/reference/common-macros-for-build-commands-and-properties?view=msvc-170

 

Common macros for MSBuild commands and properties

Learn more about: Common macros for MSBuild commands and properties

learn.microsoft.com

 

반응형

+ Recent posts