此链接错误是什么意思?以及如何解决它
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)
答案 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_LINK
或BOOST_ALL_DYN_LINK
中的任何一个,则会对其进行定义。
如果您静态链接Boost.Log(通过.lib
文件或类似文件),则不得定义这两个宏中的任何一个。 1 < / p>
这意味着您可以删除额外的预处理器定义(因为您尝试链接到静态库)或使用Boost的动态库版本(请参阅例如here有关如何设置它的信息)窗口)。
1 请注意,某些库ignore those flags outright。如果这些宏配置错误,Boost.Log似乎是为数不多的实际问题之一