저는 약 7 개월 동안 Java 프로그래밍을 공부해 왔으며 C++에 관심을 갖게되었습니다. 나는 현재 C++ 책을 읽고있다.SHGetKnownFolderPath가이 범위에서 선언되지 않았습니다.
이클립스 C++을 사용하고 있습니다. 일식에 익숙하기 때문에.
저는 C++로 6 개의 프로젝트 (작은 것들)를 만들었고 모든 것이 지금까지 잘되었습니다.
내 문제는 작동하도록 SHGetKnownFolderPath 메서드를 가져올 수 없다는 것입니다. 전체 라인이 빨간색입니다. 모든 것을 가져 왔지만 빌드하고 실행 해 보았습니다. 나는 인터넷 사이트를 점검했고, 다른 사람들과 같은 코드를 사용했지만 여전히 나를 위해 일하지 않는다.
은 말한다 : 기능 SHGetKnownFolderPath가 윈도우 8 컴퓨터 64 비트에
난
를 확인할 수 없습니다. 로그 UPDATE 여기#define WINVER 0x0600 // 0x06020000 0x06030000
#include <shlobj.h>
#include <windows.h>
#include <combaseapi.h>
#include <comutil.h> //for _bstr_t (used in the string conversion)
#include <knownfolders.h>
#include <winerror.h> //for HRESULT
#include <winnt.h>
#include <iostream>
#include <string>
using namespace std;
int main(){
LPWSTR wszPath = NULL;
HRESULT hr;
hr = SHGetKnownFolderPath(FOLDERID_Documents, 0, NULL, &wszPath);// THIS LINE IS COMPLETELY RED
if (SUCCEEDED(hr)){
_bstr_t bstrPath(wszPath);
std::string strPath((char*)bstrPath);
std::cout << strPath;
}
CoTaskMemFree(wszPath);
return 0;
}
됩니다 :
#pragma comment(lib, "comsuppw")
^
..\src\HelloWorld.cpp: In function 'int main()':
..\src\HelloWorld.cpp:21:64: error: 'SHGetKnownFolderPath' was not declared in this scope
hr = SHGetKnownFolderPath(FOLDERID_Documents, 0, NULL, &wszPath);
마지막 괄호에 약간 가리키는 화살표가 & wszPath 아래에있다)
무엇을 할 수 아마도 여기 코드입니다 틀렸어? 나는 내가 얻을 수있는 모든 대답이나 힌트에 감사 할 것입니다.
입니까?어쩌면, 당신은 비스타보다 오래된 버전을위한 앱을 만들려고하고 있습니까? 빌드 설정에서 WINVER 또는 _WIN32_WINNT 매크로와 관련된 것이 있습니까? –
방금 #define WINVER 0x0600을 추가했습니다. – Johan
"다음과 같습니다 : SHGetKnownFolderPath 함수를 확인할 수 없습니다."및 " 'SHGetKnownFolderPath'이 (가)이 범위에서 선언되지 않았습니다." 두 가지 오류 메시지 중 올바른 것은 무엇입니까? – jalf