对于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/