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

nat*_*yer 1 c++ namespaces boost-asio openframeworks visual-studio-2015

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

1>c:\users\me\documents\of_v0.9.1_vs_release\addons\ofxasio\libs\asio-1.10.6\include\asio/detail/config.hpp(229): warning C4005: 'ASIO_ERROR_CATEGORY_NOEXCEPT': macro redefinition (compiling source file src\ofApp.cpp)
1>  c:\users\me\documents\of_v0.9.1_vs_release\addons\ofxasio\libs\asio-1.10.6\include\asio/detail/config.hpp(215): note: see previous definition of 'ASIO_ERROR_CATEGORY_NOEXCEPT' (compiling source file src\ofApp.cpp)
1>c:\users\me\documents\of_v0.9.1_vs_release\addons\ofxasio\libs\asio-1.10.6\include\asio/detail/impl/win_thread.ipp(59): error C2039: 'CreateEvent': is not a member of '`global namespace'' (compiling source file src\ofApp.cpp)
1>c:\users\me\documents\of_v0.9.1_vs_release\addons\ofxasio\libs\asio-1.10.6\include\asio/detail/impl/win_thread.ipp(59): error C3861: 'CreateEvent': identifier not found (compiling source file src\ofApp.cpp)
1>c:\users\me\documents\of_v0.9.1_vs_release\addons\ofxasio\libs\asio-1.10.6\include\asio/detail/impl/win_thread.ipp(69): error C2039: 'CreateEvent': is not a member of '`global namespace'' (compiling source file src\ofApp.cpp)
1>c:\users\me\documents\of_v0.9.1_vs_release\addons\ofxasio\libs\asio-1.10.6\include\asio/detail/impl/win_thread.ipp(69): error C3861: 'CreateEvent': identifier not found (compiling source file src\ofApp.cpp)
1>c:\users\me\documents\of_v0.9.1_vs_release\addons\ofxasio\libs\asio-1.10.6\include\asio/detail/impl/win_iocp_handle_service.ipp(42): error C2039: 'CreateEvent': is not a member of '`global namespace'' (compiling source file src\ofApp.cpp)
1>c:\users\me\documents\of_v0.9.1_vs_release\addons\ofxasio\libs\asio-1.10.6\include\asio/detail/impl/win_iocp_handle_service.ipp(42): error C3861: 'CreateEvent': identifier not found (compiling source file src\ofApp.cpp)
Run Code Online (Sandbox Code Playgroud)

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

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

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

我看到它需要WinBase.h旧版本的 Windows 和Synchapi.hWindows 8。我正在运行 Windows 8.1;但不幸的是,包括这些选项都不起作用。

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

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

小智 5

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