2014-03-13 2 views
2

(Visual Studio 2010/Visual C++/Windows 7)Невозможно назвать SHGetKnownFolderPath() даже с #include <Shlobj.h> и #pragma комментарий (Пб "Shell32.lib")

example.cpp:

#include <Shlobj.h> 
#pragma comment (lib, "Shell32.lib")  
... 
void example() 
{ 
    SHGetKnownFolderPath(...) // undefined 
} 

Я делаю все в соответствии с documentation и что я вижу в других потоках, но он все еще не работает.

+0

Что вы имеете в виду? Что происходит при компиляции кода? Когда вы запустите его? Почему вы не передаете параметры функции, которую она ожидает? Попробуйте показать нам свой фактический код вместо псевдокода. – jalf

+0

Какая ошибка? Возможно, вы не указали Vista +. – chris

+0

@ sgar91, я знаю по опыту, что работает .lib. – chris

ответ

1

Попробуйте положить следующее заявление, прежде всего включает в себя:

#define WINVER 0x0600 
#define _WIN32_WINNT 0x0600 

Поскольку documentation говорит, что нужно Vista/минимум 2008.

+3

У вас там Windows 8. Vista - 0x0600, а 7 (OP) - 0x0601. Кроме того, есть '_WIN32_WINNT_VISTA' и' _WIN32_WINNT_WIN7'. – chris

+0

Yup, я поставил последний, который я использую! – Ajay

2

У меня была точно такая же проблема. Работал еще один проект с тем же кодом и вспомогательными файлами (но в других случаях).

Ввод #include <Shlobj.h> В верхней части файла решена проблема.

Возможно, он не может быть реплицируемым, поскольку он должен был работать без этого. Возможно, еще одна ошибка Visual Studio.

+0

Если изменение порядка включений появляется, чтобы устранить проблему, проблема связана либо с заголовочными файлами (* Shlobj.h * не является частью Visual Studio, кстати), либо не соблюдает дополнительные правила при использовании прекомпилированного файлы заголовков. Конечно, не ошибка в Visual Studio. – IInspectable