[cpp] Visual Studio 2015에서 stdio 라이브러리 오류 해결 방법

@codemaru · August 06, 2016 · 1 min read

Visual Studio 2015를 사용해서 오픈 소스를 빌드해보면 종종 링크 단계에서 vsnprintf를 찾을 수 없다거나 황당하게 printf를 찾을 수 없다는 링크 오류가 발생한다. 해당 문제는 해당 함수들이 Visual Stduio 2015에서 인라인 구현으로 변경되었기 때문이다. <stdio.h>나 <conio.h>를 포함하고 관련 함수를 사용하면 상관이 없는데 해당 헤더를 인클루드 하지 않고 컴파일한 다음 링크를 하면 심벌을 찾을 수 없다는 오류가 발생한다.

해결 방법은 두 가지인데 1) 파일을 일일이 뒤져서 헤더 파일을 추가해주는 방법 2) legacy_stdio_definitions.lib을 링크 단계에서 포함시켜주는 방법이 있다. 당연지사 그 많은 소스 파일을 수정할 수 없기 때문에 legacy_stdio_definitions.lib을 추가해 주는 것이 편리하다.

이것 외에도 Visual Studio 2015에서 호환성을 저해하는 변경 사항이 궁금하다면 아래 페이지를 참고하도록 하자.

https://msdn.microsoft.com/en-us/library/bb531344.aspx

@codemaru
돌아보니 좋은 날도 있었고, 나쁜 날도 있었다. 그런 나의 모든 소소한 일상과 배움을 기록한다. 여기에 기록된 모든 내용은 한 개인의 관점이고 의견이다. 내가 속한 조직과는 1도 상관이 없다.
(C) 2001 YoungJin Shin, 0일째 운영 중