SHGetSpecialFolderPath函数使用编译报错?请高手指教 - C++ Builder / Windows SDK/API
#include <shlobj.h>
#pragma comment(lib, "shell32.lib")
TCHAR szPath[MAX_PATH];
SHGetSpecialFolderPath(NULL,szPath,CSIDL_COMMON_DOCUMENTS, FALSE);
编译报错,为何?
[C++ Error] shobjidl.h(2193): E2238 Multiple declaration for 'FOLDERSETTINGS'
[C++ Error] shobjidl.h(8095): E2238 Multiple declaration for 'DESKBANDINFO'
[C++ Error] shlobj.h(1422): E2238 Multiple declaration for 'FVSHOWINFO'
[C++ Error] shlobj.h(3457): E2238 Multiple declaration for 'SHELLFLAGSTATE'
[C++ Error] Unit1.cpp(21): E2206 Illegal character ' ' (0xa1a1)
[C++ Error] Unit1.cpp(21): E2206 Illegal character ' ' (0xa1a1)
[解决办法]
重复定义的问题,这样解决:
#define NO_WIN32_LEAN_AND_MEAN // 从 Windows 头中排除极少使用的资料
#include <shlobj.h>
#include <vcl.h>
将它们加到最前面。
Illegal character ' ' (0xa1a1)
这个问题,是由于代码中存在全角空格引起的。替换成半角的空格就行了。