Некоторое время я использовал 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 как переменные-члены, это просто строка, которая должна порождать рабочие потоки, что является проблемой.
Я полагаю, что у меня правильно установлена надстройка, так как она полностью удовлетворена расположением заголовков.
Спасибо заранее.
Ошибка в том, что boost::asio::io_service::run
перегружен, и в этом случае вы должны разрешить неоднозначность.
Других решений пока нет …