所以,
我遇到了一个奇怪的错误,我似乎无法找到解决方案。我在Qt Creator 3.1.1上编写了这段代码。代码是:
#include <ShlObj.h>
#include <string>
#include <vector>
static std::wstring GetUserDirectory()
{
std::wstring returnPath;
TCHAR path[MAX_PATH];
HRESULT hr = SHGetFolderPath(NULL, CSIDL_COMMON_DOCUMENTS, NULL,
SHGFP_TYPE_CURRENT, path);
if (hr == S_OK)
{
returnPath = path;
return returnPath;
}
else
{
return NULL;
}
}
当我尝试构建程序时,我收到以下链接错误:
错误:LNK2019:未解析的外部符号__imp_SHGetFolderPathW在函数&#34中引用; public:static class std :: basic_string,class std :: allocator&gt; __cdecl FileUtils :: GetUserDirectory(void)&#34; (?GetUserDirectory @ @@ fileutils中SA?AV?$ basic_string的@ _WU?$ char_traits @ _W @ @@ STD V'$分配器@ _W @ @@ 2 STD @@ XZ)
错误:LNK1120:1个未解析的外部
我假设这些错误与上面的代码有关,因为根据我的理解,SHGetFolderPath只是SHGetFolderPathW的包装器。但是,我不确定为什么我会收到此错误。任何帮助将不胜感激。
谢谢,
答案 0 :(得分:4)
这是因链接期间未包含正确的库而导致的Windows链接器错误。请阅读
的功能文档http://msdn.microsoft.com/en-us/library/windows/desktop/bb762181%28v=vs.85%29.aspx
然后你会在底部看到你必须包括
Library:Shell32.lib
如果您使用的是Qt,那就意味着您必须将LIBS += lshell32
添加到Qt项目文件中。