создание рабочего потока boost :: asio с boost :: thread под linux

Некоторое время я использовал boost под windows, и теперь мне нужно перенести пару существующих приложений для запуска на Ubuntu 12 для демонстрации. Это приложение создает два рабочих потока: один для записи входящих данных UDP, а другой для прослушивания отдельного порта и вывода этих данных на экран.

Я получил все остальное, чтобы работать, но по какой-то причине следующая строка терпит неудачу с ошибкой «Недопустимая перегрузка boost :: asio :: io_service :: run»

m_logThread = new boost::thread( boost::bind( &boost::asio::io_service::run, m_ioServicePtr ));

Эта строка отлично работает на моей машине с Win32, но выдает недопустимую ошибку перегрузки в Linux.

Есть также две другие ошибки:

boost::bind is ambiguous

а также

type boost::thread could not be resolved

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

Я полагаю, что у меня правильно установлена ​​надстройка, так как она полностью удовлетворена расположением заголовков.

Спасибо заранее.

2

Решение

Ошибка в том, что boost::asio::io_service::run перегружен, и в этом случае вы должны разрешить неоднозначность.

3

Другие решения

Других решений пока нет …