Я использую ускоренные потоки, и все отлично работает при компиляции с /MD, но вместо этого я предпочитаю компилировать с /MT.
Затем я получаю проблему: program.exe: Native завершил работу с кодом 255 (0xff).
Это происходит в этой строке:
thread_1 = поток (testThread, тест);
копнув глубже, я понял, что проблема в том, что _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