Я использую потоки повышения, и все отлично работает при компиляции с / 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) */
}
, так что теперь я знаю, в чем проблема, но для жизни я могу 't выяснить, как это исправить
boost построен следующим образом (для этого конкретного компилятора, который выдает msvc ++ .lib)
bjam toolset=msvc-10.0 variant=debug threading=multi link=static runtime-link=static