2010-04-16 4 views
2

필자는 MSVC 2010을 사용하여 기본 컴파일 설정 (참고 : "멀티 스레드 DLL"대신 "멀티 스레드"를 사용하여 Microsoft C++ 런타임이 필요하지 않음)을 작성했습니다.내 C++ 응용 프로그램은 어떤 Windows 버전 및 구성에서 실행됩니까?

필자는 STL과 Win32 API (Windows.h)의 몇 가지 오래된 기능 만 사용했습니다.

  • 내 앱은 어디에서 실행됩니까? (98-7?)
  • 내 PC가 다른 PC에서 작동하는 방식에 차이가있을 수 있습니까? 즉 : 그것은 단지 간단한 콘솔 앱입니다.

갖고 계신 경우 추가 정보를 추가 할 수 있으면 기쁩니다.

+1

그리고 그것이 유니 코드 프로그램으로 컴파일되었는지 (이것이 내가 생각하는 디폴트이다). – KTC

답변

1

MSDN에서 "Using the Windows Headers"을 확인하십시오. 다양한 OS 혼합을 지원하기 위해 Windows 헤더 파일을 구성하는 방법을 설명합니다.

0

다른 방식으로 어떤 버전의 Windows를 지원해야하는지 생각한 다음 필요로하는 API가 지원되는지 또는 해결 방법을 찾아야하는지 확인할 수 있다고 생각합니다. 더 이상 지원되지 않는 Win9x에 대한 Chris의 의견을 확인한 후, 2010 redist 패키지가 WinXP 이상을 지원한다는 것을 알게되었으므로 이제 Win 2000 용으로 컴파일 할 수 없을 수도 있습니다.

3

가장 간단한 답변은 다음과 같습니다. 앱은 사용하는 다른 API에 따라 Windows 버전 5.0 이상에서 실행됩니다.

Visual C++ 2008에 5.0의 하드 제한이 도입되어 생성되는 모든 실행 파일의 모든 PE 헤더에서 최소 OS 버전 필드에 5를 찍습니다.

Windows NT는 버전이 5 이상인 유일한 Windows OS이므로 Windows 95, 98, ME는 VS 2008 및 VS 2010으로 만든 프로그램을 실행할 수 없습니다. Windows 2000은 실제로 Windows NT 5.0이므로 실제로 사용할 수 있습니다. 목표. XP는 5.1, 비스타 6.0이며, 바보 같은 일로 윈도우 7은 실제로 윈도우 NT 버전 6.1이다.

+0

거의 "바보 같은 짓이다". 버전 범프가 미미한 이유는 잘못 작성된 버전 검사를 수행하는 응용 프로그램과의 하위 호환성을 유지하는 데 도움이되었습니다. 'idiocy'는 신청서를 작성한 개발자의 입장에 있습니다. – RaptorFactor

+0

아, 두 번째 요점을 추가하고 싶습니다. 지원하려는 최소 버전을 기반으로 사용하는 API를 수동으로 '필터링'하는 것은 상당히 못생긴 '해결책'입니다. 'dkackman'이 컴파일러에게 버전 제약 조건을 강제 할 수 있다고 제안하면 LL 및 GPA는 정적으로 가져올 수없는 모든 것입니다. – RaptorFactor

관련 문제