Visual Studio 2015에서 SDL2 프로젝트를 컴파일할 때 개발자는 확인되지 않은 외부 기호 __imp__fprintf 및 __imp____iob_func.
기본적인 문제는 Visual Studio 2015가 이전 버전과 다르게 stdin, stderr 및 stdout을 정의한다는 사실에서 비롯됩니다. 이전 Visual Studio 릴리스에서는 세 가지 표준 IO 스트림을 포함하는 배열을 가리키는 매크로로 정의되었습니다. 그러나 Visual Studio 2015에서는 __acrt_iob_func()를 사용하여 정의됩니다.
따라서 stdin, stderr 및 stdout의 이전 정의에 의존하는 이전 Visual Studio 버전으로 컴파일된 코드에는 정의되지 않은 참조가 발생합니다. Visual Studio로 컴파일된 라이브러리(.lib)에 연결할 때 __iob_func()에 2015.
이 문제를 해결하기 위한 한 가지 해결책은 __iob_func()를 {stdin, stdout, *stderr}을 포함하는 배열로 수동으로 정의하는 것입니다. 이렇게 하면 코드에 __iob_func()에 대한 필수 참조가 포함됩니다.
또한 stdio 함수(예: scanf, printf)를 사용하는 코드에서는 확인되지 않은 외부 기호가 나타날 수도 있습니다. 이 문제를 해결하기 위해 개발자는 링커 옵션에 Legacy_stdio_definitions.lib를 추가할 수 있습니다. 이 라이브러리는 누락된 stdio 함수에 대한 정의를 제공합니다.
위 내용은 SDL2 Visual Studio 2015 프로젝트에서 해결되지 않은 외부 기호 __imp__fprintf 및 __imp____iob_func가 나타나는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!