У меня возникли проблемы с использованием функции SHGetKnownFolderPath(). Я получаю следующее сообщение об ошибке: Type error in argument 1 to 'SHGetKnownFolderPath'; expected 'const struct _GUID *' but found 'struct _GUID'.
Не удается получить функцию SHGetKnownFolderPath()
В KnowFolders.h
мы имеем следующие соответствующие определения:
#define DEFINE_KNOWN_FOLDER(name,l,w1,w2,b1,b2,b3,b4,b5,b6,b7,b8) \
EXTERN_C const GUID name
...
DEFINE_KNOWN_FOLDER(FOLDERID_ProgramFiles,0x905e63b6,0xc1bf,0x494e,0xb2,0x9c,0x65,0xb7,0x32,0xd3,0xd2,0x1a);
Я использую Pelles C компилятор.
Это мой пример кода:
#include <windows.h>
#include <wchar.h>
#include <KnownFolders.h>
#include <shlobj.h>
int wmain(int argc, wchar_t **argv) {
PWSTR path = NULL;
HRESULT hr = SHGetKnownFolderPath(FOLDERID_ProgramFiles, 0, NULL, &path);
if (SUCCEEDED(hr)){
wprintf(L"%ls", path);
}
CoTaskMemFree(path);
return 0;
}
Как исправить это сообщение об ошибке?
EDIT Я нашел примеры кода с SHGetKnownFolderPath(); все выполняют функцию без указателя. Например:
hr = SHGetKnownFolderPath(FOLDERID_Public, 0, NULL, &pszPath);
if (SUCCEEDED(hr))
{
wprintf(L"FOLDERID_Public: %s\n", pszPath);
CoTaskMemFree(pszPath);
}
Он хочет указатель на GUID, поэтому передать его указатель. 'SHGetKnownFolderPath (& FOLDERID_ProgramFiles, ...);' –
Сообщение об ошибке вряд ли может быть более ясным. В нем говорится: * Введите ошибку в аргументе 1 в 'SHGetKnownFolderPath'; ожидаемый 'const struct _GUID *', но нашел 'struct _GUID' * Это не могло быть сделано более ясным. Я полагаю, вы понимаете концепцию несоответствия типа? –
@JonathanPotter Уже пробовал. Приводит к неразрешенному внешнему символу «FOLDERID_ProgramFiles». ошибка.Кроме того, рабочие примеры, которые я нашел, не передают указатель. –