与boost链接未解决外部链接错误

与boost链接未解决外部链接错误,boost,Boost,VisualStudio2005 我正在链接boost libraries发行版1_33_1 我一直收到这个链接错误 libboost_thread-vc80-mt-sgd-1_33_1.lib(once.obj) :error LNK2001: unresolved external symbol "public: void __thiscall std::_String_base::_Xran(void)const " (?_Xran@_String_base@std@@QBEXXZ) 有

VisualStudio2005

我正在链接boost libraries发行版1_33_1

我一直收到这个链接错误

libboost_thread-vc80-mt-sgd-1_33_1.lib(once.obj) :error LNK2001: unresolved external symbol "public: void __thiscall std::_String_base::_Xran(void)const " (?_Xran@_String_base@std@@QBEXXZ)
有人有什么建议吗

非常感谢,

编辑======

使用这些开关重新编译boost库后:

C:\boost_1_42_0>bjam --build-dir=d:\boost_1_42 --build-type-complete --toolset=msvc-8.0 address-model=32 architecture=x86
我遇到以下一些错误:

1>msvcrtd.lib(ti_inst.obj) : error LNK2005: "private: class type_info & __thiscall type_info::operator=(class type_info const &)" (??4type_info@@AAEAAV0@ABV0@@Z) already defined in LIBCMTD.lib(typinfo.obj)
1>msvcrtd.lib(MSVCR80D.dll) : error LNK2005: __wassert already defined in LIBCMTD.lib(wassert.obj)
有人有什么想法吗


非常感谢,

首先,如果构建32位,您不必显式设置地址模型和体系结构。您的呼叫也有错误:
--build type complete
应该是
--build type=complete
。如果我没有错的话,您的调用将构建所有lib,包括文件系统、regex等。
显然,您只需要boost::thread,因此我建议您尝试以下调用:

C:\boost_1_42_0>bjam --build-dir=d:\boost_1_42 --build-type=complete --toolset=msvc-8.0 --with-thread
但我认为这不能解决你的问题,但你可以试试。

我猜您在项目设置中以某种方式混合了/MD和/MT。
请参阅以下链接:

可能发生的是,您的项目链接到C++运行时的静态调试版本,这会导致静态调试增强线程库被链接,并且还链接到另一个静态链接库,该静态库与C++运行时动态链接。

<代码> > SGD< /CaseTAG在代码> LBoBOSTSTTHEXTER -VC80-MT-SGD1Y333 1中。LIB < /C>意味着与您连接的Boost线程库是针对C++运行时的静态调试版本构建的。

是您的项目32或64位?只是猜测,因为我曾经想链接32位Boost LIBS到一个不工作的64位项目,必须用64位编译boost库。但是,可能您的boost库是使用64位构建的……但是,为了确保我已经使用以下内容重新编译了boost库:address model=32 architecture=x86。正确的设置,因此这不是您的问题。重新编译后,我会收到一些不同的错误。我已经更新了我的答案。谢谢