tcp :: acceptor对象导致boost :: asio :: io_service :: run在.so文件中立即退出

时间:2018-07-05 16:19:30

标签: c++ boost server boost-asio

我已经为我的应用程序服务器使用了boost async io。我一直在关注boost chat tutorial。当我使一个独立的服务器可执行文件时,在调用boost :: asio :: io_service :: run时,所有异步(async_read,async_write,post)操作都将被执行,但是当我尝试在共享对象(.so)中使用同一类时)文件,boost :: asio :: io_service :: run调用会立即返回。创建tcp :: acceptor对象后出现问题。我评论了tcp :: acceptor对象的创建,并在我的so代码中尝试了asyn操作后,它在boost :: asio :: io_service :: run的调用中正确执行。

我是Boost asio的初学者,请帮助我理解为什么在so代码中使用boost :: asio :: io_service :: run调用会立即返回

编辑: 我正在使用第三方api并动态加载共享对象文件。我创建了mcve代码来动态加载so和调用so函数,但是boost :: asio :: io_service :: run函数在mcve代码上运行良好。我还可以采取什么其他步骤来调试io_service中的问题

1 个答案:

答案 0 :(得分:0)

最后发现的问题,是由于用于api可执行文件和文件的gcc版本不同