【问题标题】:boost::asio::steady_timer get stuck at WaitForSingleObject when built as a DLLboost::asio::steady_timer 在构建为 DLL 时卡在 WaitForSingleObject
【发布时间】:2022-10-21 12:11:20
【问题描述】:

我刚刚遇到了一个奇怪且具有破坏性的问题,我在任何地方都找不到有关它的任何信息。

asio::steady_timer 计时器(m_context);

如果我将这个asio::steady_timer 构建为EXE,它工作得非常好,但是如果它构建为一个DLL,它会在初始化asio::steady_timer 时等待WaitForSingleObject(在win_thread.ipp 文件中,第106 行),请看下面的图片。

这个DLL 只是一个空项目,它只包含asio.hpp 文件。我发现this_article 可能是相关的问题,但仍然找不到调试或修复此问题的方法。

我做错了什么,还是这是图书馆的错误?

谢谢你的时间!

【问题讨论】:

  • 感谢您的回答,我发布了堆栈跟踪的屏幕截图,代码实际上只是那 1 行
  • @thedemons 代码是至关重要的是在 DllMain 内部,它是不是单行。
  • 您需要重新设计代码以根据调用方请求进行所需的初始化。 DllMain 不是处理重要任务的地方。

标签: c++ boost c++17 boost-asio asio


【解决方案1】:

这是通过制作这两个类成员或全局变量来解决的。

asio::io_context context;
asio::steady_timer timer(context);

【讨论】:

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