유니버설 Windows 플랫폼 앱에서 지원되지 않는 CRT 함수

UWP(유니버설 Windows 플랫폼) 앱을 빌드할 때는 CRT(많은 C 런타임) 함수를 사용할 수 없습니다. 경우에 따라 해결 방법을 사용할 수 있습니다. 예를 들어 Windows 런타임 또는 Win32 API를 사용할 수 있습니다. 다른 경우에는 해당 기능 또는 지원 API를 UWP 앱에 적용할 수 없으므로 CRT 함수가 금지되었습니다. Windows 런타임 지원되는 대체 방법을 찾으려면 UWP 앱에서 Windows API에 대한 대안을 참조하세요.

다음 표에서는 UWP 앱을 빌드할 때 사용할 수 없는 CRT 함수를 나열합니다. 적용되는 모든 해결 방법을 나타냅니다.

지원되지 않는 CRT 함수

함수 설명 해결 방법
_beep _sleep _seterrormode 이들 함수는 이전 버전 CRT에서 더 이상 사용되지 않습니다. 또한 해당 Win32 API는 UWP 앱에 사용할 수 없습니다. 해결 방법이 없습니다.
chdir _chdrive getcwd 이들 함수는 더 이상 사용되지 않거나 스레드로부터 안전하지 않습니다. _getcwd 및 관련 함수를 사용합니다_chdir.
_cgets _cgets_s _cgetws _cgetws_s _cprintf _cprintf_l _cprintf_p _cprintf_p_l _cprintf_s _cprintf_s_l _cputs _cputws _cscanf _cscanf_l _cscanf_s _cscanf_s_l _cwait _cwprintf _cwprintf_l _cwprintf_p _cwprintf_p_l _cwprintf_s _cwprintf_s_l _cwscanf _cwscanf_l _cwscanf_s _cwscanf_s_l _vcprintf _vcprintf_l _vcprintf_p _vcprintf_p_l _vcprintf_s _vcprintf_s_l _vcwprintf _vcwprintf_l _vcwprintf_p _vcwprintf_p_l _vcwprintf_s _vcwprintf_s_l _getch _getch_nolock _getche _getche_nolock _getwch _getwch_nolock _getwche _getwche_nolock _putch _putch_nolock _putwch _putwch_nolock _ungetch _ungetch_nolock _ungetwch _ungetwch_nolock _kbhit kbhit putch cgets cprintf cputs cscanf cwait getch getche ungetch 이러한 콘솔 I/O 함수는 GUI 기반 UWP 앱에서 사용할 수 없습니다. UWP 콘솔 앱은 이러한 함수를 사용할 수 있습니다. 자세한 내용은 유니버설 Windows 플랫폼 콘솔 앱 만들기를 참조하세요.
getpid _getpid 이러한 함수는 사용되지 않습니다. Win32 API GetCurrentProcessId를 사용합니다.
_getdiskfree 사용할 수 없습니다. Win32 API GetDiskFreeSpaceExW를 사용합니다.
_getdrive _getdrives 해당 API는 UWP 앱에 사용할 수 없습니다. 해결 방법이 없습니다.
_inp _inpd _inpw _outp _outpd _outpw inp inpd inpw outp outpd outpw 포트 IO는 UWP 앱에서 지원되지 않습니다. 해결 방법이 없습니다.
_ismbcalnum _ismbcalnum_l _ismbcalpha _ismbcalpha_l _ismbcdigit _ismbcdigit_l _ismbcgraph _ismbcgraph_l _ismbchira _ismbchira_l _ismbckata _ismbckata_l _ismbcl0 _ismbcl0_l _ismbcl1 _ismbcl1_l _ismbcl2 _ismbcl2_l _ismbclegal _ismbclegal_l _ismbclower _ismbclower_l _ismbcprint _ismbcprint_l _ismbcpunct _ismbcpunct_l _ismbcspace _ismbcspace_l _ismbcsymbol _ismbcsymbol_l _ismbcupper _ismbcupper_l _mbbtombc _mbbtombc_l _mbbtype _mbbtype_l _mbccpy _mbccpy_l _mbccpy_s _mbccpy_s_l _mbcjistojms _mbcjistojms_l _mbcjmstojis _mbcjmstojis_l _mbclen _mbclen_l _mbctohira _mbctohira_l _mbctokata _mbctokata_l _mbctolower _mbctolower_l _mbctombb _mbctombb_l _mbctoupper _mbctoupper_l _mbsbtype _mbsbtype_l _mbscat _mbscat_l _mbscat_s _mbscat_s_l _mbschr _mbschr_l _mbscmp _mbscmp_l _mbscoll _mbscoll_l _mbscpy _mbscpy_l _mbscpy_s _mbscpy_s_l _mbscspn _mbscspn_l _mbsdec _mbsdec_l _mbsicmp _mbsicmp_l _mbsicoll _mbsicoll_l _mbsinc _mbsinc_l _mbslen _mbslen_l _mbslwr _mbslwr_l _mbslwr_s _mbslwr_s_l _mbsnbcat _mbsnbcat_l _mbsnbcat_s _mbsnbcat_s_l _mbsnbcmp _mbsnbcmp_l _mbsnbcnt _mbsnbcnt_l _mbsnbcoll _mbsnbcoll_l _mbsnbcpy _mbsnbcpy_l _mbsnbcpy_s _mbsnbcpy_s_l _mbsnbicmp _mbsnbicmp_l _mbsnbicoll _mbsnbicoll_l _mbsnbset _mbsnbset_l _mbsnbset_s _mbsnbset_s_l _mbsncat _mbsncat_l _mbsncat_s _mbsncat_s_l _mbsnccnt _mbsnccnt_l _mbsncmp _mbsncmp_l _mbsncoll _mbsncoll_l _mbsncpy _mbsncpy_l _mbsncpy_s _mbsncpy_s_l _mbsnextc _mbsnextc_l _mbsnicmp _mbsnicmp_l _mbsnicoll _mbsnicoll_l _mbsninc _mbsninc_l _mbsnlen _mbsnlen_l _mbsnset _mbsnset_l _mbsnset_s _mbsnset_s_l _mbspbrk _mbspbrk_l _mbsrchr _mbsrchr_l _mbsrev _mbsrev_l _mbsset _mbsset_l _mbsset_s _mbsset_s_l _mbsspn _mbsspn_l _mbsspnp _mbsspnp_l _mbsstr _mbsstr_l _mbstok _mbstok_l _mbstok_s _mbstok_s_l _mbsupr _mbsupr_l _mbsupr_s _mbsupr_s_l is_wctype 멀티바이트 문자열은 UWP 앱에서 지원되지 않습니다. 대신 유니코드 문자열을 사용합니다.
_pclose _pipe _popen _wpopen 파이프 기능은 UWP 앱에 사용할 수 없습니다. 해결 방법이 없습니다.
_resetstkoflw 지원 Win32 API는 UWP 앱에 사용할 수 없습니다. 해결 방법이 없습니다.
_getsystime _setsystime 이들 API는 이전 CRT 버전에서 더 이상 사용되지 않습니다. 또한 사용자는 권한이 없으므로 UWP 앱에서 시스템 시간을 설정할 수 없습니다. 시스템 시간만 가져오려면 Win32 API GetSystemTime을 사용합니다. 시스템 시간을 설정할 수 없습니다.
_environ_putenv_putenv_s_searchenv_searchenv_s_dupenv_s_wputenv_wputenv_s_wsearchenv getenv getenv_s putenv _wdupenv_s_wenviron_wgetenv_wgetenv_s_wsearchenv_stzset 환경 변수는 UWP 앱에 사용할 수 없습니다. 해결 방법이 없습니다. 표준 시간대 _tzset를 설정하려면 .
_loaddll _getdllprocaddr _unloaddll 이들 함수는 이전 CRT 버전에서 더 이상 사용되지 않습니다. 또한 사용자는 동일한 애플리케이션 패키지에 있는 DLL을 제외하고 DLL을 로드할 수 없습니다. Win32 API LoadPackagedLibrary, GetProcAddressFreeLibrary 를 사용하여 패키지된 DLL을 로드 및 사용합니다.
_wexecl _wexecle _wexeclp _wexeclpe _wexecv _wexecve _wexecvp _wexecvpe _execl _execle _execlp _execlpe _execv _execve _execvp _execvpe _spawnl _spawnle _spawnlp _spawnlpe _spawnv _spawnve _spawnvp _spawnvpe _wspawnl _wspawnle _wspawnlp _wspawnlpe _wspawnv _wspawnve _wspawnvp _wspawnvpe _wsystem execl execle execlp execlpe execv execve execvp execvpe spawnl spawnle spawnlp spawnlpe spawnv spawnve spawnvp spawnvpe system 이 기능은 UWP 앱에서 사용할 수 없습니다. UWP 앱은 다른 UWP 앱이나 데스크톱 앱을 호출할 수 없습니다. 해결 방법이 없습니다.
_heapwalk _heapadd _heapchk _heapset _heapused 일반적으로 이들 기능은 힙 작업을 하는 데 사용됩니다. 그러나 해당 Win32 API는 UWP 앱에서 지원되지 않습니다. 또한 앱에서 더 이상 전용 힙을 만들거나 사용할 수 없습니다. 해결 방법이 없습니다. 그러나 _heapwalk 은 DEBUG CRT에서 디버깅 목적으로만 사용할 수 있습니다. 이러한 함수는 Microsoft Store에 업로드된 앱에서 사용할 수 없습니다.

UWP 앱용 CRT에서 사용할 수 있는 함수는 다음과 같습니다. 그러나 큰 코드 베이스를 포팅하는 경우와 같이 해당 Win32 또는 Windows 런타임 API를 사용할 수 없는 경우에만 사용합니다.

함수 해결 방법
단일 바이트 문자열 함수 - 예: strcat, strcpy, strlwr등. 노출된 모든 Win32 API 및 Windows 런타임 API는 유니코드 문자 집합만 사용하므로 UWP 앱을 엄격하게 유니코드로 만듭니다. 큰 코드 베이스를 포팅하기 위해 싱글 바이트 함수가 남아 있지만, 그렇지 않으면 피해야 합니다. 가능하면 해당 와이드 문자 함수를 대신 사용해야 합니다.
스트림 IO 및 하위 수준 파일 IO 함수 - 예: fopen, open등. 이러한 함수는 동기적이므로 UWP 앱에는 권장되지 않습니다. UWP 앱에서는 UI 스레드 잠금을 방지하기 위해 비동기 API를 사용하여 파일을 열고, 읽고, 씁니다. 해당 API의 예제는 Windows::Storage::FileIO 클래스의 예제입니다.

Windows 8.x 스토어 앱 및 Windows Phone 8.x 앱

이전에 멘션 API와 다음 API는 모두 Windows 8.x 스토어 앱과 Windows 전화 8.x 앱에서 사용할 수 없습니다.

함수 설명 해결 방법
_beginthread _beginthreadex _endthread _endthreadex 스레딩 Win32 API는 Windows 8.x 스토어 앱에서 사용할 수 없습니다. 대신 Windows Runtime Windows::System::Threading::ThreadPool 또는 concurrency::task 를 사용합니다.
_chdir _wchdir _getcwd _getdcwd _wgetcwd _wgetdcwd 작업 디렉터리 개념은 Windows 8.x 스토어 앱에 적용되지 않습니다. 대신 전체 경로를 사용합니다.
_isleadbyte_l_ismbbalnum, _ismbbalnum_l, _ismbbalpha, _ismbbalpha_ismbbalpha_l_ismbbgraph_ismbbgraph_l_ismbbkalnum_ismbbkalnum_l_ismbbkana_ismbbkana_l_ismbbkprint_ismbbkprint_l_ismbbkpunct_ismbbkpunct_l_ismbblead_ismbblead_l_ismbbprint_ismbbprint_l_ismbbpunct_ismbbpunct_l_ismbbtrail_ismbbtrail_l_ismbslead_ismbslead_l_ismbstrail_ismbstrail_l_mbsdupisleadbyte 멀티바이트 문자열은 Windows 8.x 스토어 앱에서 지원되지 않습니다. 대신 유니코드 문자열을 사용합니다.
_tzset 환경 변수는 Windows 8.x 스토어 앱에 사용할 수 없습니다. 해결 방법이 없습니다.
_get_heap_handle, _heapmin 해당 Win32 API는 Windows 8.x 스토어 앱에서 지원되지 않습니다. 또한 앱에서 더 이상 전용 힙을 만들 수 없습니다. 해결 방법이 없습니다. 그러나 _get_heap_handle 은 DEBUG CRT에서 디버깅 목적으로만 사용할 수 있습니다.