본문 바로가기

어떻게 할까/소프트웨어

Visual Studio 2012, Update 5 적용 후 찾아온 지옥 해결기

 gcc 나 MinGW 를 쓸때엔 이런 어처구니 없는 경우를 잘 안겪습니다만, 회사에서 일을 하다 보면 죄다 Visual Studio 로 하는 일이 많습니다. 딱히 컴파일러 이해나 그런거 없고, 그냥 M$ 거라 쓰는거 + MFC 로만 뭘 할 줄 아는 제한 조건들 때문이기도 한데, gcc 로 컴파일 하는 환경에 마딱드리면 사람들이 멍하니 바보가 되는 경우가 많은 나라다 보니 어쩔수 없는 부분도 많습니다.


문제의 Update 5 ...


 이번에 특정 엔진을 만드는데, 위와 같은 이유로 gcc 로 만들어 두면 디버깅도 못하고 (gdb 가 뭔지 모름) IDE 에 이상한 플러그인 깔아서 쓰는거에 익숙해 진 분들이 많다 보니 어쩔수 없는 선택 이긴 했습니다만, M$ 에서 배포하는 Update 5 설치 하고 나니 이런 문제가 생깁니다.


xxx : fatal error C1083: Cannot open include file: 'cstdio': No such file or directory.


엄? 이게 뭔 소리야 ?

혹시나 해서 기본으로 빈 소스를 만들고 그냥 컴파일 해 봅니다. 흔하디 흔산 hello world 입니다.




역시나, 지들이 기본으로 제공하는 예제 소스도 빌드가 안됩니다.

조건이 precompiled header 를 안쓰는걸로 stdafx.h 를 지우고 <cstdio> 를 써 도 똑 같습니다.

C++ 표준에 왜 stdio.h 를 참조를 하고 있는건 뭐 예전 부터 c++ 표준 따윈 개나 줘 버린 M$ 이니 그러려니 한다 합니다만 ...



 찾아 보니 M$ 에서 배포하는 Update 에 종종 이런 일이 생긴다고 하던데, 혹시나 해서 가장 있어 보이는 특정 레지스트리 이하를 지우고, 다시 복구를 해 보는걸 해 보랍니다.



 그래서 해 봤는데, 역시 안됩니다.

 그렇다고 해서 Update 5 를 따로 삭제하는 기능도 없습니다. 그냥 2012 설치 디스크에서 복구를 진행 합니다. 이래도 안되면 다시 지우고 설치 해야 할지 모르겠습니다만, 정말 이게 편하자고 쓰는건지 궁금 합니다. 제가다 IDE 가 WPF 로 만든거라 특정 폰트와 커서 위치가 맞지 않는 괴상한 증세도 많은데, 이걸 정말 개발툴이라 만들어 놓은건지 ...


....


결론적으론 안됩니다.


이 뭐 병 ...




 이래서 M$VS 는 안쓰고 싶습니다.

 대체 이게 뭐 하자는 건지 ...

 안그래도 환경이 M$ 쪽은 병맛동산급 인데, 이걸 또 되게 하려고 뭘 깔고, 바꾸고 지R염병파티를 해야 할걸 생각 하면 앞날이 깜깜 합니다. 이딴걸 돈주고 팔고 있는 것들이라니.


해결 방법

 일단 개발을 gcc 로 하다가 다시 한번 해결을 위해 시도를 해 보았습니다만, 의외로 간단 하게 해결이 되었습니다.

 이유는 모르겠으나, 2012 용 include 와 library 가 다음 위치에 있었습니다.



 VS 2012 를 처음 설치 했었을시 여기에 이게 있었는지, 아니면 update 5 가 적용 되면서 인지는 모르겠지만, 2012 관련 위치를 VS2012 에 적용 해야 합니다.


 VS 2012 설정에서 다음처럼 Include 를 위 위치의 include 를 추가 합니다. ( All Configuration 이나 '모든 설정' 에 )



그런 다음 Library 도 아래 처럼 추가 해 줍니다.



그리고 컴파일 안되던 것을 다시 시도 해 보면 ...


 잘 됩니다.

 대체 이런 병맛 구조를 만든 이유가 뭔지 이해는 안갑니다만, Update 5 이후 부터 생긴 문제로, 복구로도 해결이 안되는거 보면 Update 5 이후의 문제가 아닌가 합니다.

 이해 하면 할 수록 이런 괴랄한 구조를 가지고 다들 개발 잘 하는거 보면 제가 문제인지, 아니면 M$VS 가 문제인지, 아니면 비선실세가 문제인지 모르겠군요.


또는,


C:\Program Files (x86)\VC 에 있는 모든 폴더를 C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC 에 복사 해 줍니다.


 역시 막장엔 막장으로 대응 !