본문 바로가기

프로그래밍/기타

Visual Studio 2015 마이그레이션(migration)



VS 마이그레이션 작업은 프로젝트마다 천자만별이기 때문에


어떤 정형화된 가이드를 안내하기 보다는 경험담으로 봐야 할 것 같다.


여기에서 소개하는 작업은 현재 개발툴중 하나를 vs2005 -> vs2015 의 마이그레이션이다.


참고로 MFC와 DX_SDK를 기반으로 만들어져 있으며


기타 Boost와 같은 외부 라이브러리도 여러개 포함되어 있다.


확실한건 외부 라이브러리가 많이 포함되어 있을수록 마이그레이션 작업이 어렵다.


풀소스가 아닌 정적라이브러인 경우, 


해당 라이브러리만 최신 버전을 다운받거나 재빌드 해야하는 경우가 생길 수 있다.



Visual Studio 마이그레이션 작업의 경우,


크게 다음과 같이 나눌 수 있을 것 같다.


먼저 상위버전에 호환되는 C++ 표준 변경에 따른 문법 수정


그리고 현재 윈도우버전 수정, 각종 라이브러리 헤더 및 경로 수정등..


해당 작업 도중 MFC 와 CRT 충돌은 없었다.


그럼 작업 결과물의 간단한 정리이다.



<디렉토리 수정 및 코드 수정>

 

DX_SDK include, lib 경로 추가

->  vs2005에서는 Tool->Option에서 설정하였지만

     vs2010이상에서는 프로젝트별로 설정


 Boost 라이브러리 헤더, include, lib 제거

->  C++ 11에서는 Boost 라이브러리가 포함되어 있음

-> 같이 사용하게 될 경우 모호한 기호 에러발생


*  변경된 std 함수 필요헤더 추가

->  shared_ptr – memory, sort – algorithm, bind2nd – functional


*  몇몇 함수 재정의 오류 수정


*   C++ 11 문법 변경으로 인한 몇몇 함수 수정

 


<매크로 추가>

 

* WinVER 0x601 변경( win7 )


*  NO_WARN_MBCS_MFC_DEPRECATION 추가

->  multibyte character encoding (MBCS) 가 향후 사라질 수 있다고 경고 Disable

->  http://stackoverflow.com/questions/24244544/visual-studio-2013-doesnt-ignore-disabled-warnings


*  _CRT_SECURE_NO_WARNINGS 추가(c4996)

->  fopen, sprintf -> fopen_s, sprintf_s 등 안전상의 이유로 함수 변경 권장경고 Disable


*  _SILENCE_STDEXT_HASH_DEPRECATION_WARNINGS

->  비표준인 Hash_map unordered_map으로 권장경고 Disable


* 기타 추가 정의된 매크로 추가


<링크옵션 수정>

 

*  /FORCE 추가

->  특정 중복정의 함수 강제 패스;

->  https://msdn.microsoft.com/ko-kr/library/70abkas3(v=vs.90).aspx


*  /SECTION:.rsrc,rw 추가

->  런타임 도중 리소스 write 시도시 OS에서 안전문제로 강제 예외처리 발생 Disable

->  https://support.microsoft.com/en-us/kb/158552

 

<기타>

 

*  DX_SDK 헤더와 VS헤더와 중복정의된 매크로가 있음

->  DX_SDK VS에 비해 너무 old 버전임


*  몇몇 헤더의 ANSI 인코딩 문제 때문에 warning 발생

->  c4819 warning Disable


*  특정파일의 경우 C언어방식 typedef 경고 발생

->  C4019 warning Disable


*  필요없는 솔루션 관련파일 제거


*  기타 Warning

->  성능상의 문제는 없지만, 추후 남은 경고도 제거할 예정