我目前正在尝试在VS2010中构建VS2008开发的解决方案。出于设计目的,必须使用v90工具集构建项目,并具有v3.5的目标框架。转换向导完成后,我已完成导入的项目,并将每个目标框架/工具集更改为这些值。这些项目使用以下boost库:thread,system,regex和date_time。我已使用VS2010命令提示符中的以下命令将boost_1_47版本中的这些库构建到v90工具集: b2 toolset = msvc-9.0 -build-type = complete -with-'libraryname'。 < / p>
在C ++附加包含目录中引用了boost根文件夹的链接,并且在链接器附加库目录中引用了库内置的boost lib文件夹。我正在为32位平台构建。
尝试构建解决方案时,我收到以下错误:
Error 17 error LNK2001: unresolved external symbol "__declspec(dllimport) public: __thiscall boost::thread::operator struct boost::detail::thread_move_t<class boost::thread>(void)" (__imp_??Bthread@boost@@QAE?AU?$thread_move_t@Vthread@boost@@@detail@1@XZ)
Error 18 error LNK2001: unresolved external symbol "__declspec(dllimport) public: class boost::thread & __thiscall boost::thread::operator=(struct boost::detail::thread_move_t<class boost::thread>)" (__imp_??4thread@boost@@QAEAAV01@U?$thread_move_t@Vthread@boost@@@detail@1@@Z)
Error 19 error LNK1120: 2 unresolved externals
我相信错误的原因可以在boost auto_link.hpp文件的以下部分中看到:
#elif defined(BOOST_MSVC) && (BOOST_MSVC == 1500)
// vc90:
# define BOOST_LIB_TOOLSET "vc90"
#elif defined(BOOST_MSVC) && (BOOST_MSVC >= 1600)
// vc10:
# define BOOST_LIB_TOOLSET "vc100"
这表明自动链接器仍在尝试链接到v100库,尽管boost库和项目文件设置为v90工具集。我不知道BOOST_MSVC值在何处/如何定义,但希望这是导致我的链接器错误的原因。
我的项目build.h文件包含以下语句:
#define BOOST_ALL_DYN_LINK