ошибка: 'signal_set' в пространстве имен 'boost :: asio' не называет тип - PullRequest
1 голос
/ 19 августа 2011

Я работаю над первым примером HTTP-сервера библиотеки Boost :: asio v1.47.http://www.boost.org/doc/libs/1_47_0/doc/html/boost_asio/examples.html

И я получил это сообщение при компиляции с gcc версии 4.5.2:

ошибка: 'signal_set' в пространстве имен 'boost :: asio' не называет тип

Я использую Jam с этим jamfile:

C++ = g++ ;
LINK = $(C++) ;
LINKLIBS = -lboost_system-mt -lboost_filesystem-mt ;
Main node : main.cpp server.cpp reply.cpp request_handler.cpp request_parser.cpp connection.cpp connection_manager.cpp ;

Я думаю, что код верен, потому что я получил ошибку с самого начала, без изменения исходного кода примера, я только что прокомментироваллиния для решения проблемы ранее.Но теперь мне нужны сигналы.

Так что я думаю, что что-то напутал с моим Jamfile.

Я нашел этот другой вопрос, связанный с моим, но он мне не помог: Невозможно скомпилировать при попытке использовать boost :: asio :: signal_set

Edit: На самом деле я выяснил: Ubuntu, который я использую, предоставляет только версию Boost 1.42, исигналы boost :: asio :: еще не реализованы ... Я установил последнюю версию, и теперь все в порядке.

1 Ответ

1 голос
/ 19 августа 2011

Эта ошибка говорит о том, что компилятор не распознает идентификатор. Это обычная ситуация, когда вы забыли включить заголовок или если версия вашего заголовка отличается и не содержит этот идентификатор.

Это первая ошибка, которую создает компилятор? В частности, жаловался ли он, что не может найти какой-либо заголовок? Это может указывать на то, что заголовки не находятся в пути, который проверяет компилятор, в этом случае вы можете добавить флаг -Ipath_to_boost в строку компиляции.

Было бы также интересно, если бы вы могли указать, какой фактический файл компилируется при обнаружении этой ошибки.

...