CreateEvent
本身不过是一个宏观#define
“d是的这是在WinAPI的的synchapi.h
#ifdef UNICODE
#define CreateEvent CreateEventW
#else
#define CreateEvent CreateEventA
#endif // !UNICODE
通常(至少在所有的Windows项目,我曾经工作)这实际上宣告了两个函数之一UNICODE宏被定义,因此实际上可以与CreateEventW
函数一起使用,该函数接受LPCWSTR
(换句话说const wchar_t*
)字的参数,它应该是一个UTF-16字符串文字。 如果它没有在你的项目中定义,那么它使用CreateEventA
,它接受LPCSTR
参数(实际上相当于const char*
),并将其视为ASCII字符串。
您的项目似乎已设置为仅支持ASCII字符串。还有......好吧,现在这已经被弃用了:)以前有一些特殊的附加组件支持这种情况的构建,叫做MFC MBCS DLL Add-on。但是,我不是100%确定它仍然可用,这里是a question here at StackOverflow about that。
如果您没有找到这样的插件或任何其他解决方案,那么恐怕唯一的方法就是将它编译为Unicode字符串。实际上,即使您找到了解决方法,如果您要继续维护此项目,我建议您将此活动添加到您的待办事项中,因为此类解决方法可能随时停止存在。
无论如何,了解您的最终结果将会很有趣。
可能你觉得这有用:https://stackoverflow.com/questions/19715144/how-to-convert-char-to-lpcwstr –
你应该更新你的整个代码库以正确使用宽字符。其实这应该在15年前完成。 – VTT
“char *”在UTF-8上仍然是标准。大多数软件工程师讨厌“wchar_t *”并为每个字符串表达式添加L.看起来像微软是唯一一个强迫程序员使用UNICODE的人。微软希望终止MBCS,但我认为这不会很快发生。 – JazzSoft