我已经建立了一台新的开发机器;它正在运行Windows 10& Visual Studio 2017社区。安装和构建的boost(1.64.0,完整版),都很好。
我一直在使用一些IPC,一切都很好,但后来我开始出现一种奇怪的行为:我的程序一开始就挂起了。
我正在处理控制台应用程序。程序刚刚启动,光标闪烁,好像它正在等待一些用户输入,或者主线程是否在任何输出发生之前处于休眠状态。即使我的所有程序首先要打印标题。
在尝试识别问题后出现了很多痛苦的失败后,我注意到只有当我使用任何boost.thread功能时才会发生这种情况。所以我想也许在将项目从VS2015迁移到VS2017时会遇到一些问题;创造了一个全新的项目,同样的事情发生了。
即使使用最简单的程序(例如simple thread example)......我得到的只是一个闪烁的光标。无论我是使用调试版还是发布配置文件构建,即使尝试调试。
VS永远不会到达任何断点(即使使用“step into”命令启动程序!)。 “挂起”似乎发生在我的代码入口点之前。
所以我希望问题很清楚:“哔哔正在发生什么?”
如前所述:其他boost库工作正常,包括boost :: locale和boost :: chrono
- 编辑:编译好,没有警告。运行“看似”很好,没有错误,也没有终止,只是挂在那里,好像主线程正在睡觉。
- 编辑2:完整代码示例:
#include <boost/thread.hpp>
#include <boost/chrono.hpp>
#include <iostream>
void wait(int seconds)
{
boost::this_thread::sleep_for(boost::chrono::seconds{seconds});
}
void thread()
{
for (int i = 0; i < 5; ++i)
{
wait(1);
std::cout << i << '\n';
}
}
int main()
{
//this point is never reached!!?! Hangs before my own code even starts
std::cout << "start!" << std::endl;
boost::thread t{thread};
t.join();
}
答案 0 :(得分:0)
好的,让它上班;我只是重建了提升,现在一切正常。必须看似问题program.exe: Native' has exited with code 255 (0xff)中提到的静态/动态混淆。
我使用以下参数重建:
b2.exe toolset=msvc-14.1 address-model=32 --build-dir=build\x64 install --prefix="C:\boost" -j4
(然后又是64位。