1

Я работаю над проектом, который включает ASIO. Я добавил библиотеки и файлы заголовков, но когда у меня есть файл, который включает в себя asio.hpp, я получаю следующие ошибки:'CreateEvent': не является членом `` глобального пространства имен '' в ASIO

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) 

Исследование онлайн показывает, что это возможно из-за меня необходимости пересмотреть _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.h для Windows 8. Я работающий под управлением Windows 8.1; но, к сожалению, ни один из этих вариантов не работал.

У кого-нибудь есть предложения по поводу того, что может вызвать эту ошибку?

Весь источник для проекта здесь: https://github.com/morphogencc/ofxAsio/tree/master/example-udpreceiver

+0

Попробуйте '#include ' как первую строку вашего '.cpp' файла. Забудьте о ẁinbase.h' или 'synchapi.h', вы, как пользователь, должны просто включать' windows.h' ... большую часть времени. – rodrigo

+0

Возможно, прогресс - если я включу его в файл '.cpp', я получу ошибку« C1189: WinSock.h уже включен ». Hmm .. –

ответ

1

При составлении заявки подталкивание WebSocket, я получил «CreateEvent: не является членом„глобального пространства имен“в ASIO» ошибка. Когда я компилирую отдельные файлы, все работает отлично, за исключением основного файла приложения, где я объединяю все заголовки. Я изменил порядок файлов заголовков, добавив заголовки boost сверху. Он решил проблему. Надеюсь, это полезно.

+0

Изменение порядка файлов заголовков (установка сверху) также устранило проблему. –

2

Я столкнулся с той же проблемой компилятора проекта, который использовал boost и Poco. Оказывается, что Poco включает в себя файл UnWindows.h, который отменяет множество макросов окон. Чтобы Poco не определял макросы, я добавил POCO_NO_UNWINDOWS в список предпроцессорных определений. Это, похоже, решило проблему повышения.

Смежные вопросы