这对 x86 编译良好:
wchar_t localAppData[MAX_PATH]; // Array, not a pointer.
SHGetFolderPath(NULL,CSIDL_LOCAL_APPDATA, 0, NULL, localAppData);
std::wstringstream ss;
ss << localAppData;
return ss;
这对 x64 编译良好:
char localAppData[MAX_PATH]; // Array, not a pointer.
SHGetFolderPath(NULL,CSIDL_LOCAL_APPDATA, 0, NULL, localAppData);
std::wstringstream ss;
ss << localAppData;
return ss;
但是,我想找到一个同时适用于 x86 和 x64 的解决方案,这样我就不必在每次切换平台时都切换“localAppData”的声明。
有人知道解决办法吗?
谢谢。
最佳答案
问题是您的 x86 项目配置为 Unicode,但您的 x64 项目配置为多字节。确保字符集在所有配置中保持一致。据推测,您打算自始至终使用 Unicode。
关于c++ - ShGetFolderPath wchar_t 不会为 x64 编译,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32067415/