【问题标题】:boost::asio only works when run within Visual Studioboost::asio 仅在 Visual Studio 中运行时有效
【发布时间】:2011-07-08 23:03:22
【问题描述】:

我正在使用来自辅助(即非 GUI)工作线程的 boost::asio::io_service 和 boost::asio::deadline_timer。当程序从 Visual Studio (2010) 中运行时,这非常有效。但是,当我在 Visual Studio 之外运行发布可执行文件时, async_wait()/run() 组合似乎没有做任何事情。

我已经确认 run() 确实会阻塞。我现在也确认调试可执行文件工作正常,只有发布可执行文件不起作用(即 async_wait() 中指定的函数未运行)。

也许有一些项目设置,一些我需要禁用的优化,或者什么?

【问题讨论】:

  • 您是在运行时遇到错误还是只是出现了您没有预料到的行为?
  • 没有错误,只是async_wait()中指定的函数没有运行。
  • 尝试在调试中构建,看看如果从 VS 外部运行它会发生什么
  • @Dave :听起来您的代码中某处有一个未初始化的对象。
  • @Dave :我的意思是标量或 POD 类型的默认初始化对象。调试构建(或者,可能,其进程在附加了 VC++ 的调试器的情况下启动的构建)通常对这些进行零初始化,而发布构建则不会。

标签: c++ visual-studio multithreading boost boost-asio


【解决方案1】:

(从评论重新发布,以便可以将问题标记为已回答)

您可能在某处有一个未初始化的变量,即标量或 POD 类型的默认初始化对象。

【讨论】:

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