LNK2038错误:'boost_log_abi'的不匹配检测:值“v2s_mt_nt5”与值“v2s_mt_nt6”不匹配。

7
在创建包含boost库的单独头文件后,我尝试将其包含到现有项目中。但是出现以下错误:
 ::  Error  15  error LNK2038: mismatch detected for 'boost_log_abi':
 value 'v2s_mt_nt5' doesn't match value 'v2s_mt_nt6' in BoostLogger.obj 
 E:\Projects\native\dcnotificationserver\loggerutil.obj  ::

我知道以前的项目可以在Windows XP到当前的Windows操作系统(即10)上运行。但是我看到boost只支持从Windows XP开始。

这是什么问题?

如何解决?

我想问题是由于Windows版本引起的?

如需更多信息,请询问我。

编辑:
我正在使用:
编译器:MSVC 10
Boost版本:1.60
Visual Studio 2010

3个回答

9

在将BOOST升级到1.60并将Visual Studio升级到2015后,我遇到了类似的问题。

通过更改/定义预处理器中的_WIN32_WINNT定义为0x601而不是0x501,我解决了这个问题。

我非常确定这意味着...支持Win7及更高版本而不是XP。


不,它必须支持Windows XP。因此,我使用boost 1.58。 - Arun kumar Kalaiarasan
1
今天我使用了-D_WIN32_WINNT=0x0600解决了这个问题。我使用的是boost 1.63.0版本。我认为我正在编译的项目是很久以前构建的。 - Stewart

1
根据我的理解,这个问题有两个解决方案。

1) 使用boost 1.58而不是使用boost 1.60
[注意:您不能使用最新功能。]

2) 否则,您可以使用cmd提取boost 1.60中的文件:
b2 release define=BOOST_USE_WINAPI_VERSION=0x0501

更多详细信息请参见此处:
http://www.boost.org/users/history/version_1_60_0.html

1

除了改用旧版本构建之外,还有另一种解决方案。

您可以使用任何版本的boost库:

b2 link=static runtime-link=static --toolset=msvc-10.0 define=BOOST_USE_WINAPI_VERSION=0x0500

当我使用MS Visual Stdio 2010时,这解决了我的问题。您也可以尝试使用此方法。


是的。你说得对。我已经完成了。它对我起作用了。不管怎样,谢谢。 - Arun kumar Kalaiarasan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接