Я изучаю Java-программирование около 7 месяцев, и меня заинтересовал C++. В настоящее время я читаю книгу на C++.SHGetKnownFolderPath не был объявлен в этой области
Я использую eclipse C++, так как я хорошо знаком с eclipse.
Я сделал как 6 проектов (маленькие) в C++, и все работает нормально до сих пор.
Моя проблема заключается в том, что я не могу заставить метод 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)
Что может быть неправым? Буду благодарен за все ответы или подсказки, которые я мог бы получить.
В чем заключается определение вашей версии Windows?Возможно, вы пытаетесь создать приложение для версий старше Vista? У вас есть что-то связанное с макросами WINVER или _WIN32_WINNT в вашей настройке сборки? –
Я просто добавил #define WINVER 0x0600. – Johan
«Он говорит: Функция SHGetKnownFolderPath не может быть решена», и «SHGetKnownFolderPath» не был объявлен в этой области ». Какое из двух сообщений об ошибках верно? – jalf