"CreateEvent":不是 ASIO 中"全局命名空间"的成员

'CreateEvent': is not a member of '`global namespace'' in ASIO

本文关键字:命名空间 成员 全局 ASIO CreateEvent 不是      更新时间:2023-10-16

我正在做一个包含ASIO的项目。 我添加了库和头文件,但是当我有一个包含 asio.hpp 的文件时,我收到以下错误:

1>c:usersmedocumentsof_v0.9.1_vs_releaseaddonsofxasiolibsasio-1.10.6includeasio/detail/config.hpp(229): warning C4005: 'ASIO_ERROR_CATEGORY_NOEXCEPT': macro redefinition (compiling source file srcofApp.cpp)
1>  c:usersmedocumentsof_v0.9.1_vs_releaseaddonsofxasiolibsasio-1.10.6includeasio/detail/config.hpp(215): note: see previous definition of 'ASIO_ERROR_CATEGORY_NOEXCEPT' (compiling source file srcofApp.cpp)
1>c:usersmedocumentsof_v0.9.1_vs_releaseaddonsofxasiolibsasio-1.10.6includeasio/detail/impl/win_thread.ipp(59): error C2039: 'CreateEvent': is not a member of '`global namespace'' (compiling source file srcofApp.cpp)
1>c:usersmedocumentsof_v0.9.1_vs_releaseaddonsofxasiolibsasio-1.10.6includeasio/detail/impl/win_thread.ipp(59): error C3861: 'CreateEvent': identifier not found (compiling source file srcofApp.cpp)
1>c:usersmedocumentsof_v0.9.1_vs_releaseaddonsofxasiolibsasio-1.10.6includeasio/detail/impl/win_thread.ipp(69): error C2039: 'CreateEvent': is not a member of '`global namespace'' (compiling source file srcofApp.cpp)
1>c:usersmedocumentsof_v0.9.1_vs_releaseaddonsofxasiolibsasio-1.10.6includeasio/detail/impl/win_thread.ipp(69): error C3861: 'CreateEvent': identifier not found (compiling source file srcofApp.cpp)
1>c:usersmedocumentsof_v0.9.1_vs_releaseaddonsofxasiolibsasio-1.10.6includeasio/detail/impl/win_iocp_handle_service.ipp(42): error C2039: 'CreateEvent': is not a member of '`global namespace'' (compiling source file srcofApp.cpp)
1>c:usersmedocumentsof_v0.9.1_vs_releaseaddonsofxasiolibsasio-1.10.6includeasio/detail/impl/win_iocp_handle_service.ipp(42): error C3861: 'CreateEvent': identifier not found (compiling source file srcofApp.cpp)

在线研究表明,这可能是由于我需要将_WIN32_WINNT重新定义为正确的版本号;但是,我已经尝试了一些版本号,并且对上述错误incompatible version of Windows error或没有解决方案。

我还在 Windows Dev 站点上找到了文档:

https://msdn.microsoft.com/en-us/library/windows/desktop/ms682396%28v=vs.85%29.aspx

我看到旧版本的Windows需要WinBase.h,Windows 8需要Synchapi.h。 我正在运行 Windows 8.1;但不幸的是,包括这些选项都没有奏效。

有没有人对可能导致此错误的原因有建议?

该项目的整个来源在这里:https://github.com/morphogencc/ofxAsio/tree/master/example-udpreceiver

我在使用 boost 和 Poco 的项目中遇到了同样的编译器问题。 事实证明,Poco包含一个"UnWindows.h"文件,该文件取消了许多窗口宏的定义。 为了防止 Poco 取消定义宏,我将POCO_NO_UNWINDOWS添加到预处理器定义列表中。 这似乎已经解决了提升问题。

在编译 boost websocket 应用程序时,我收到"CreateEvent:不是 ASIO 中'全局命名空间'的成员"错误。当我编译单个文件时,除了合并所有标头的主应用程序文件外,一切正常。我通过在顶部添加提升标头来更改头文件的顺序。它解决了问题。希望这是有帮助的。