提升链接错误LNK2038:“boost_log_abi”“v2s_mt_nt6”不匹配“v2_mt_nt6"

时间:2018-05-09 15:41:02

标签: c++ windows boost visual-studio-2015

此链接错误是什么意思?以及如何解决它

error LNK2038: “boost_log_abi” “v2s_mt_nt6” doesn't match  “v2_mt_nt6"

我试过了

  ADD_DEFINITIONS(-DBOOST_ALL_DYN_LINK)
  ADD_DEFINITIONS(-DBOOST_LOG_DYN_LINK)
  ADD_DEFINITIONS(-DBOOST_USE_WINAPI_VERSION=0x601)

1 个答案:

答案 0 :(得分:0)

您的Boost.Log库似乎是使用与主程序不同的标志构建的。

config.hpp,我们可以看到这些ABI名称的含义:

  • v2s_mt_nt6在Windows Vista或更高版本(版本6)上具有多线程支持的静态链接

  • v2_mt_nt6 动态链接,支持多线程,支持Windows Vista或更高版本(版本6)

BOOST_LOG_DLL宏决定使用哪两条路径。如果定义了BOOST_LOG_DYN_LINKBOOST_ALL_DYN_LINK中的任何一个,则会对其进行定义。

如果您静态链接Boost.Log(通过.lib文件或类似文件),则不得定义这两个宏中的任何一个。 1 < / p>

这意味着您可以删除额外的预处理器定义(因为您尝试链接到静态库)或使用Boost的动态库版本(请参阅例如here有关如何设置它的信息)窗口)。

1 请注意,某些库ignore those flags outright。如果这些宏配置错误,Boost.Log似乎是为数不多的实际问题之一