C++ 为什么#定义UNICODE在windows中无效
我有以下代码:C++ 为什么#定义UNICODE在windows中无效,c++,windows,C++,Windows,我有以下代码: #define UNICODE // so strange?? GetModuleBaseName( hProcess, hMod, szProcessName, sizeof(szProcessName)/sizeof(TCHAR) ); 但编译器仍报告如下错误: 错误C2664:“DWORD K32GetModuleBaseNameA(句柄,HMODULE,LPSTR,DWORD)”:无法将参数 3.从“wchar_t[260]”转换
#define UNICODE
// so strange??
GetModuleBaseName( hProcess, hMod, szProcessName,
sizeof(szProcessName)/sizeof(TCHAR) );
但编译器仍报告如下错误:
错误C2664:“DWORD K32GetModuleBaseNameA(句柄,HMODULE,LPSTR,DWORD)”:无法将参数 3.从“wchar_t[260]”转换为“LPSTR”[E:\source\mh gui\build\src\mhgui.vcxproj]
这意味着无法将参数3从wchar_t[260]转换为LPSTR
。看起来还是在寻找版本api吗?您必须将
#define UNICODE
#define _UNICODE
以前
#包括
Windows标头使用了#ifdef UNICODE
(等),因此如果要进行区分计数,#defines
必须出现在#include
之前
编辑:因为这些定义在功能上是全局的,所以添加它们最可靠的地方是在编译器选项中,所以顺序并不重要。因为您使用的是visual studio,与其自己定义UNICODE,不如在解决方案资源管理器->属性->高级->中右键单击项目来启用W版本,将“字符集”选项更改为“使用UNICODE字符集”更好地将这些定义添加到编译器选项中,以便在编译过程中设置它们。如果使用PCH,这应该是编译器选项。我建议您直接使用W函数。在2020年,不使用unicode感知函数总是有点罪恶,明白了吗。非常感谢。
#include <Windows.h>