반응형
👨💻 안녕하세요, 윌리 프로젝트의 윌리 입니다.
MFC에서 절전 모드 관련 코딩을 하는데, PowerGetActiveScheme, PowerReadACValue, PowerReadDCValue 함수를 찾을 수 없다고 오류가 나서 물어봤습니다.
질문 >
'PowerGetActiveScheme': 식별자를 찾을 수 없습니다. 라고 나와요.
답변 >
PowerGetActiveScheme 함수를 사용하려고 할 때 "식별자를 찾을 수 없습니다." 오류가 발생하는 이유는 주로 다음과 같은 이유들로 인해 발생할 수 있습니다:
- 헤더 파일이 포함되지 않음: PowerGetActiveScheme 함수는 powrprof.h 헤더 파일에 선언되어 있습니다. 이 헤더 파일을 포함해야 합니다.
- 라이브러리가 링크되지 않음: PowerGetActiveScheme 함수는 PowrProf.lib 라이브러리에 정의되어 있으므로 이 라이브러리를 프로젝트에 링크해야 합니다.
해결 방법
- 헤더 파일 포함: 다음 코드를 소스 파일 상단에 추가하여 powrprof.h 헤더 파일을 포함합니다.
- #include <powrprof.h>
- 라이브러리 링크: PowrProf.lib 라이브러리를 프로젝트에 링크해야 합니다. 이를 위해 다음과 같이 #pragma comment 지시문을 추가합니다.
- #pragma comment(lib, "PowrProf.lib")
- 정의되지 않은 식별자 해결: 추가로, PowerGetActiveScheme는 Windows Vista 이상에서 사용 가능합니다. 따라서, 해당 함수가 작동하려면 Windows SDK에서 해당 API가 정의된 버전을 대상으로 빌드해야 합니다.
#define WINVER 0x0600 // Windows Vista 이상 #define _WIN32_WINNT 0x0600 // Windows Vista 이상 #include <windows.h>
- 프로젝트에서 대상 플랫폼을 명시적으로 설정하기 위해서는 Windows.h 포함 이전에 WINVER와 _WIN32_WINNT를 다음과 같이 정의합니다.
최종 코드 예시
#include <afxwin.h> // MFC 헤더 파일
#include <powrprof.h> // PowerGetActiveScheme 함수
#pragma comment(lib, "PowrProf.lib") // PowrProf 라이브러리 링크
void GetActivePowerScheme()
{
GUID* pActivePolicyGuid = NULL;
if (PowerGetActiveScheme(NULL, &pActivePolicyGuid) == ERROR_SUCCESS)
{
AfxMessageBox(_T("현재 활성화된 전원 관리 설정을 성공적으로 가져왔습니다."));
if (pActivePolicyGuid != NULL)
{
LocalFree(pActivePolicyGuid);
}
}
else
{
AfxMessageBox(_T("전원 관리 설정을 가져오는 중 오류가 발생했습니다."));
}
}
요약
- powrprof.h 헤더 파일을 포함하고, PowrProf.lib 라이브러리를 링크해야 합니다.
- 타겟 플랫폼이 Windows Vista 이상인 경우, 프로젝트에서 이를 명시적으로 정의해야 합니다.
🎬 유튜브 채널 🎬
🎬 치지직 채널 🎬
반응형
'프로그래밍' 카테고리의 다른 글
👨💻 [Unreal - ChatGPT] 언리얼 엔진 5.4 에서 블렌더로 제작한 객체를 사용할 수 있나요? (2) | 2024.09.09 |
---|---|
👨💻 [Unreal - ChatGPT] 언리얼 엔진 5.4 에서 블루프린트 기능은 무엇인가요? (3) | 2024.09.06 |
👨💻 [MFC - ChatGPT] MFC에서 설정 창의 전원 및 절전 창을 열려면 어떻게 해야 하나요? (5) | 2024.09.04 |
👨💻 [MFC - ChatGPT] MFC 에서 전원으로 배터리가 연결되었는지 확인할 수 있나요? (2) | 2024.09.03 |
👨💻 [MFC - ChatGPT] MFC 에서 윈도우 절전 모드 설정 창을 열려면 어떻게 해야 하나요? (4) | 2024.09.02 |