我正在使用boost线程,并且在使用/ MD进行编译时一切正常但我更喜欢使用/ MT进行编译
我得到的问题是program.exe:Native'已经退出代码255(0xff)。
这就发生在这一行:
thread_1 = thread(testThread,test);
深入挖掘之后,我意识到问题是_crtheap等于0,即:它没有被初始化。见于mlock.c
/*
* Check if CRT is initialized. The check if _crtheap is initialized
* will do the job. More over we had to add this test in initlocks because
* in debug version we don't endup calling lock before calling malloc_base,
* where we check for crtheap.
*/
if (_crtheap == 0) {
_FF_MSGBANNER(); /* write run-time error banner */
_NMSG_WRITE(_RT_CRT_NOTINIT); /* write message */
__crtExitProcess(255); /* normally _exit(255) */
}
所以现在我知道问题是什么,但对于我的生活,我无法弄清楚如何解决它
boost是这样构建的(对于这个特定的编译,它给出.lib的msvc ++要求)
bjam toolset=msvc-10.0 variant=debug threading=multi link=static runtime-link=static
答案 0 :(得分:0)
对我而言,这是CRT打嗝之间的经典组合:
请尝试使用此配方重新编译boost库
bjam toolset=msvc-10.0 variant=release threading=multi link=static runtime-link=static