错误C2440:'初始化':无法从'TCHAR [260]'转换为 “的std :: basic_string的< wchar_t的,标准:: char_traits< wchar_t的>,的std ::分配器< wchar_t的>>
我收到这个错误,被困在这几个小时..
MiniZinc IDE
答案 0 :(得分:1)
TCHAR
定义为char
或wchar_t
,具体取决于您是否定义了UNICODE
宏。在您的情况下,它看起来没有定义,因此您尝试从std::wstring
数组构建char[]
。
我建议你总是在Windows上使用宽API,因为这是在那里获得适当的Unicode支持的唯一方法:
wchar_t szModName[MAX_PATH];
if (!GetModuleFileNameExW(hProcess, hMods[i], szModName, MAX_PATH))
continue;
wstring modName = szModName;
GetModuleFileNameEx
不是一个函数,而是一个扩展为GetModuleFileNameExA
或GetModuleFileNameExW
的宏,具体取决于UNICODE
宏。
最初,提供TCHAR
变体是为了便于从没有Unicode支持的旧Windows版本过渡到支持Unicode的新的基于NT的Windows版本。如今,根本没有理由使用ANSI变体。