Первое, что я сделал (будет предоставлен минимальный образец, если не я просто сделаю что-то глупое):
У меня есть приложение с графическим интерфейсом, которое должно поддерживать несколько сетевых интерфейсов для изменения содержимого, отображаемого в графическом интерфейсе. Сетевые интерфейсы реализованы в виде плагинов, которые динамически загружаются при запуске графического интерфейса. Приложение с графическим интерфейсом предоставляет объект boost :: asio :: io_service, который он передает через ссылку на интерфейсы, чтобы они могли использовать его для построения асинхронного ввода-вывода. В потоке GUI этот объект io_service опрашивается для синхронизации доступа сетевых интерфейсов к контенту.
Проблема теперь в том, что обработчики не вызываются объектом io_service при опросе. Чтобы сузить это, я реализовал только один интерфейс и создал в нем объект io_service, все еще вызывая опрос из потока GUI, и это работает.
Теперь мой вопрос: возможно ли, что существует общая проблема с передачей объекта io_service в функции DLL, загруженные во время выполнения?
Если сценарий слишком неясен, я приведу минимальный пример.
РЕДАКТИРОВАТЬ: Я чувствую себя действительно глупо :) Просто взломали вместе минимальный пример, и это - конечно - работает как шарм. Это в значительной степени означает, что проблема возникает из какой-то другой части программного обеспечения.
Так что спасибо всем за их вклад!
Чтобы сделать этот вопрос хоть немного полезным:
Любой, кто хочет сделать что-то подобное (плагины для сети синхронизируются через boost :: asio :: io_service), вы можете скачать минимальный пример здесь .