컴파일 에러는 너무나 사람을 지치게 한다. 기껏 코딩해 놨더니 왜 컴파일이 안돼...


이번에 나온 오류는 


error C2220: warning treated as error - no 'object' file generated    요놈이다.


MSDN 참고 링크 

https://msdn.microsoft.com/ko-kr/library/ksk5k0ta(v=vs.120).aspx


컴파일러 오류 C2220

Visual Studio 2013
경고가 오류로 처리되어 생성된 개체 파일이 없습니다.

/WX는 컴파일러가 모든 경고를 오류로 처리하도록 합니다. 오류가 발생했기 때문에, 개체나 실행 파일이 생성되지 않았습니다.

오류는 /WX 플래그가 설정될 때에만 나타나고 경고는 컴파일하는 동안에 발생 합니다. 이 오류를 해결 하려면, 프로젝트의 모든 경고를 제거 해야 합니다.

해결하려면, 다음 방법 중 하나를 사용합니다

  • 프로젝트에서 경고를 발생 시키는 문제를 해결 합니다.

  • 낮은 경고 수준에서 컴파일합니다 — 예를 들어 /W3 를 사용합니다 (/W4대신).

  • 경고 pragma를 사용하여 사용 안 함 또는 특정 경고를 표시 합니다.

  • 컴파일 하기 위해 /WX 사용하지 않습니다.

MSDN 왈 이렇다고 한다.


그니깐 warning을 error로 취급하고 있다는 것.



해결방안은 두 가지가 있다.


1. 뭔지도 모르지만 그냥 warning을 무시.


프로젝트 우클릭 후 Properties에 들어가자.

Project Settings - Configuration Properties - C/C++ - General - Treat Warnings as Errors 항목이

ALL로 되어 있다면 No로 바꾼다.


해결.



2. warning 이 왜 뜨는지 확인하고 이를 해결.


이 때 확인해야할 부분은 어떤 warning이 error로 취급받고 있냐는 것이다.

output이나 error list에서 warning부분을 살펴보면 발견할 수 있다.


본인의 에러는 아래와 같았다.


warning C4819: The file contains a character that cannot be represented in the current code page (949). Save the file in Unicode format to prevent data loss


인코딩에러....라는 뜻이다. 

해당 파일의 인코딩을 unicode - codepage 1200로 바꿔주면 문제해결.


visual studio에서 인코딩을 바꾸려면 FILE-Advanced save option 를 클릭하면 원하는 인코딩을 선택할 수 있다.


혹은 


#pragma warning ( disable : warning번호)  

를 헤더파일에 입력해 주면 된다. 본인의 경우 #pragma warning ( disable : 4819) 
















'개발 > C and C++' 카테고리의 다른 글

error LNK2019 발생  (0) 2016.06.16
C/C++ 에서 clock() 함수를 이용하여 수행시간 측정하기  (0) 2016.06.16

+ Recent posts