2016-07-05 2 views
1

이 질문은 다소 이상하지만 Code :: Blocks 및 GCC를 사용하고 있습니다. 내 프로젝트에서 특정 기능을 사용하려면 사용자 컴퓨터에 Windows 버전이 설치되어 있는지 확인해야합니다.gcc를 사용하여 Windows 버전 가져 오기 C++

VS2013/15를 사용하면 VersionHelpers.h 및 IsWindowsXXXOrGreater()를 사용할 수 있습니다. 하지만 GCC C++은 어떨까요?

+1

는'#INCLUDE Windows.h' 및 Kernel32.lib'와'Ntdll.lib''와 링크 [documentationm] (HTTPS에 설명 된대로 : //msdn.microsoft.com/en-us/library/windows/desktop/dn424961(v=vs.85).aspx) – mvidelgauz

답변

2

GCC 또는 Clang 또는 다른 컴파일러를 사용하는 경우에도 여전히 VersionHelpers.h을 사용합니다. 이 함수는 Visual C++와는 아무런 관련이 없습니다. 이들은 모든 Windows 응용 프로그램에서 사용해야하는 Windows SDK의 일부입니다.

download the Windows SDK from Microsoft 수 있으며 개발 컴퓨터에 설치되어 있지 않은 경우 설치하십시오. 일단 설치되면 Code :: Blocks에 SDK의 헤더 파일과 LIB 파일을 찾을 수있는 경로를 지정해야합니다.

VersionHelpers.h은 해당 헤더에 포함됩니다 (단, 포함 할 내용은 모두 Windows.h입니다). VersionHelpers.h 파일은 일련의 인라인 함수를 정의하여 궁극적으로 kernel32.libntdll.lib에서 내 보낸 함수를 호출합니다. 링커가 해당 LIB 파일을 찾을 수 있으면 모든 것이 예상대로 작동합니다.

그러나 Windows의 실제 버전을 확인할 필요는 거의 없습니다. 대신 기능인이 지원되는지 확인해야합니다. 사용할 수없는 API 함수 (예 : Windows 10에서만 지원되는 함수, 이전 버전을 계속 지원해야하는 함수)를 호출하려면 GetModuleHandle 또는 LoadLibraryGetProcAddress을 결합하여 dynamically call that function을 결합해야합니다. (당신이 LoadLibrary를 호출하면 완료되면, 당신은 또한 FreeLibrary를 호출해야합니다.)

관련 문제