在Visual Studio 2010中使用Boost时链接错误LNK2001

时间:2015-01-09 14:26:25

标签: visual-studio-2010 qt boost linker

我在Visual Studio 2010中使用Boost 1.54和Qt 5.3.2。我正在尝试使用Boost Filesystem的静态库。但是,每当我尝试构建我的应用程序时,我都会收到以下链接错误:

libboost_filesystem-mt.lib(path.obj) : error LNK2001: unresolved external symbol "__declspec(dllimport) public: __thiscall std::codecvt<wchar_t,char,int>::codecvt<wchar_t,char,int>(unsigned int)" (__imp_??0?$codecvt@_WDH@std@@QAE@I@Z)
libboost_filesystem-mt.lib(path.obj) : error LNK2001: unresolved external symbol "__declspec(dllimport) private: __thiscall std::locale::_Locimp::_Locimp(class std::locale::_Locimp const &)" (__imp_??0_Locimp@locale@std@@AAE@ABV012@@Z)
libboost_filesystem-mt.lib(path_traits.obj) : error LNK2001: unresolved external symbol "__declspec(dllimport) public: int __thiscall std::codecvt<wchar_t,char,int>::in(int &,char const *,char const *,char const * &,wchar_t *,wchar_t *,wchar_t * &)const " (__imp_?in@?$codecvt@_WDH@std@@QBEHAAHPBD1AAPBDPA_W3AAPA_W@Z)
libboost_filesystem-mt.lib(path_traits.obj) : error LNK2001: unresolved external symbol "__declspec(dllimport) public: int __thiscall std::codecvt<wchar_t,char,int>::out(int &,wchar_t const *,wchar_t const *,wchar_t const * &,char *,char *,char * &)const " (__imp_?out@?$codecvt@_WDH@std@@QBEHAAHPB_W1AAPB_WPAD3AAPAD@Z)

以下是有关我的项目设置的一些其他信息,可能会有所帮助:

    配置属性&gt;中的
  • BOOST_ALL_NO_LIB C / C ++&gt;预处理器&gt;预处理器定义
  • 配置属性&gt;中的
  • Multi-threaded (/MT) C / C ++&gt;代码生成&gt;运行时库
  • 配置属性&gt;中的
  • libboost_filesystem-mt.liblibboost_system-mt.lib链接器&gt;输入&gt;附加依赖
  • 配置属性&gt;中的
  • ..\Libraries\1.54.0\lib_win32(Boost库文件夹)链接器&gt;一般&gt;其他图书馆目录
  • 配置属性&gt;中的
  • msvcrt.libmsvcprt.lib链接器&gt;输入&gt;忽略特定的默认库

可能是什么问题?我在网上看到Boost与Qt的效果不太好。这可能是问题吗?

1 个答案:

答案 0 :(得分:2)

正如drescherjm指出你有不同的运行时库:

  • 除非您自己构建,否则请使用CRT
  • 的动态版本
  • libboost_filesystem-mt.lib是链接到CRT
  • 的静态版本的静态构建
  • /MT选项指定此项目在构建时应使用CRT的静态版本

备选方案1:对所有

使用CRT的多线程动态链接版本
  • 忽略特定默认库
  • 中删除msvcrt.libmsvcprt.lib个库
  • 使用boost_filesystem-vc100-mt-1_54.dllboost_system-vc100-mt-1_54.lib
  • 使用/MD代替/MT

备选方案2:使用/MT代替/MD

自行构建Qt

注意: