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

10-11 15:45