program.exe:Native'已退出代码255(0xff)

时间:2012-03-07 16:17:35

标签: c++ visual-c++ boost boost-thread msvcrt

我正在使用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

1 个答案:

答案 0 :(得分:0)

对我而言,这是CRT打嗝之间的经典组合:

  1. boost库与静态调试CRT(使用所谓的/ MD开关)链接
  2. 您的应用程序与静态版本CRT(使用所谓的/ MT开关)链接
  3. 请尝试使用此配方重新编译boost库

    bjam toolset=msvc-10.0 variant=release threading=multi link=static runtime-link=static