未解决的外部符号" void __cdecl boost :: tss_cleanup_implemented(void)"

时间:2015-11-25 12:34:25

标签: c++ boost

当我尝试搜索此错误时,我感到非常惊讶,因为我只得到了4个结果,其中两个似乎是中文的。编译项目时我收到此错误并完全增加源代码。我搜索了升级库,发现了这个:

namespace boost
{
    /*
    This file is a "null" implementation of tss cleanup; it's
    purpose is to to eliminate link errors in cases
    where it is known that tss cleanup is not needed.
    */

    void tss_cleanup_implemented(void)
    {
        /*
        This function's sole purpose is to cause a link error in cases where
        automatic tss cleanup is not implemented by Boost.Threads as a
        reminder that user code is responsible for calling the necessary
        functions at the appropriate times (and for implementing an a
        tss_cleanup_implemented() function to eliminate the linker's
        missing symbol error).

        If Boost.Threads later implements automatic tss cleanup in cases
        where it currently doesn't (which is the plan), the duplicate
        symbol error will warn the user that their custom solution is no
        longer needed and can be removed.
        */
    }

}

我的问题是什么是清理,为什么需要它以及如何实现它。

1 个答案:

答案 0 :(得分:0)

我不了解TSS,但是要解决此链接器错误,您需要定义

BOOST_THREAD_WIN32

BOOST_THREAD_BUILD_LIB

所以boost/thread/src/win32/tss_pe.cpp实现了缺少的功能(空)。

我认为在Internet上针对该问题的结果很少,因为构建方案很少见。大多数人不是在自己的项目中构建增强功能,而是使用b2构建增强功能。