2014-03-13 74 views
2

(Visual Studio 2010中/的Visual C++/Windows 7中)無法調用SHGetKnownFolderPath()即使的#include <Shlobj.h>和#pragma評論(LIB, 「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

是的,我把最新的一個,我用! – Ajay

2

我有完全相同的問題。另一個具有相同代碼和輔助文件(但不同包括)的項目正在運行。

#include <Shlobj.h>置於文件頂部解決了問題。

雖然它可能無法複製,因爲它應該沒有這樣做。可能是另一個Visual Studio錯誤。

+0

如果更改includes的順序似乎解決了一個問題,那麼問題要麼與涉及的頭文件相關(* Shlobj.h *不是Visual Studio的一部分,順便說一句),或者在使用預編譯時不遵守附加規則頭文件。當然不是Visual Studio中的錯誤。 – IInspectable