使用升级库将解决方案从VS2008升级到VS2010。错误LNK2001

时间:2014-06-13 08:42:03

标签: visual-studio-2010 visual-studio-2008 boost lnk2001 autolink

我目前正在尝试在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

0 个答案:

没有答案