Подводные камни передачи объект класса asio::io_context в динамическую библиотеку
Есть приложение с плагинами.
Приложение создает asio::io_context
и передает его в плагины при их инициализации.
В приложении:
asio::io_context ctx; // Уничтожается только при выходе из приложения
//...
auto plugins = LoadPlugins(); // Load DLL-s
for(auto p: plugins)
{
p->Init(&ctx); // Send CTX object from APP into DLL
}
Где то в плагине
ctx->SomeMethod(...); // use object from APP in DLL
При этом ctx->SomeMethod
может быть шаблонным.
UPD: вопрос можно обобщить на передачу любых сложных объектов(std::string
, например) через границу application <-> dll
Какие подводные камни есть в подобном подходе?
Источник: Stack Overflow на русском