【问题标题】:tcp::acceptor object causing boost::asio::io_service::run to exit immediately in .so filetcp::acceptor 对象导致 boost::asio::io_service::run 在 .so 文件中立即退出
【发布时间】:2018-07-05 16:19:30
【问题描述】:

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

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

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

【问题讨论】:

  • 除非这是特定于 Boost.asio 的常见问题,否则您可能需要将代码减少到 MCVE 以便任何人都能够提供帮助。如果没有看到代码,通常很难说出问题所在。

标签: c++ boost server boost-asio


【解决方案1】:

终于找到问题了,是由于api可执行文件和so文件使用的gcc版本不同造成的

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多