-
미리 컴파일된 헤더를 쓰면서 생긴 문제 하나개발/C·C++ 2019. 9. 14. 20:25
콘솔에 로그를 출력할 때 색깔 등의 설정에 변화를 줄 수 있는 라이브러리가 있다(https://archive.codeplex.com/?p=cppconlib). 아직 이유는 파악 못했지만 해당 라이브러를 쓰기 위한 헤더 파일과 해당 헤더 파일을 인클루드 하는 헤더파일을 미리 컴파일된 헤더(like stdafx.h)에 넣어놓자(IOCP.h에서 Logger.h를 인클루드하는데, Logger.h가 conmanip.h를 인클루드하고 있고, IOCP.h와 Logger.h는 모두 미리 컴파일된 헤더에서 인클루드했다) 중복 정의 관한 오류인 LNK2005가 발생했다.
정확한 이유는 파악하지 못했다. 중복 문제를 일으킬 만한 인클루드 문제가 '확실하게 없고', 오류의 원인으로 지적된 _settextcolor() 함수나 settextcolor()를 재정의하지도 않았기 때문이다. 이 라이브러리는 이미 정상적으로 작동하고 있던 소스에서 가져왔으며 해당 소스에서는 미리 컴파일된 헤더를 사용하지 않았다. '정말' 문제가 없다고 판단한 상황에서 중복 정의 오류가 발생했고 마침 미리 컴파일된 헤더를 사용하고 있다면, 해당 라이브러리를 직간접적으로 인클루드하고 있는 헤더 파일을 '미리 컴파일된 헤더'에서 없애고 각각에 맞는 헤더 파일에서 인클루드해보는 걸 권한다.
*원인을 알고 있는 분이 이 글을 읽게 되신다면 답변 부탁드립니다.
'개발 > C·C++' 카테고리의 다른 글
간과할 수 있는 문자열 비교 실수 (0) 2019.10.01 pragma once는 만능이 아니다 (0) 2019.09.17 미리 컴파일된 헤더 오류 (0) 2019.08.20 이 작업을 수행하기 위해 이 파일과 연결된 앱이 없습니다 (0) 2019.08.20 비주얼 스튜디오에서 [언어 확장] 옵션 (0) 2019.08.16