>백엔드 개발 >C++ >SDL2 Visual Studio 2015 프로젝트에서 해결되지 않은 외부 기호 __imp__fprintf 및 __imp____iob_func가 나타나는 이유는 무엇입니까?

SDL2 Visual Studio 2015 프로젝트에서 해결되지 않은 외부 기호 __imp__fprintf 및 __imp____iob_func가 나타나는 이유는 무엇입니까?

Susan Sarandon
Susan Sarandon원래의
2024-11-28 09:33:10204검색

Why am I getting Unresolved External Symbols __imp__fprintf and __imp____iob_func in my SDL2 Visual Studio 2015 Project?

SDL2의 확인되지 않은 외부 기호 __imp__fprintf 및 __imp____iob_func

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.