프로그래밍
👨💻 [MFC] MFC에서 'PowerGetActiveScheme': 식별자를 찾을 수 없습니다. 라고 나와요.
밝음의기둥
2024. 9. 5. 14:36
반응형
👨💻 안녕하세요, 윌리 프로젝트의 윌리 입니다.
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 이상인 경우, 프로젝트에서 이를 명시적으로 정의해야 합니다.
"이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다."
🎬 유튜브 채널 🎬
위로그@WiLog
📢 안녕하세요, 위로그@WiLog 시청자 여러분, 저는 윌리 입니다. 📢 위로그@WiLog 는 자기주도학습을 목적으로 라이브 스트리밍을 합니다. 📢 1인 게임 개발을 목표로 Unreal과 Blender를 학습 중입니
www.youtube.com
🎬 치지직 채널 🎬
위로그 채널 - CHZZK
지금, 스트리밍이 시작됩니다. 치지직-
chzzk.naver.com
반응형