Boost链接程序时abi不一致报错
离大谱
用VS+Boost写程序的时候,Intellisense没有给出任何报错,但是编译的时候给出如下信息:
LNK2038: mismatch detected for 'boost_log_abi': value 'v2s_mt_nt6' doesn't match value 'v2s_mt_nt62'
到网上转了一圈,看到别人遇到了类似问题,但又不完全一样,包括:
- 编译Boost库的环境与编译应用程序的环境不一致(
v2s_mt_nt5
/v2s_mt_nt6
) - 用动态库链接静态对象文件(
v2_mt_nt6
/v2s_mt_nt6
)
但我这个情况,库版本没问题,编译环境也完全一致,报错也跟上述有点不一样。。。
地铁老人手机.jpg
找了好久原因,后来想起之前遇到过相同的问题,从哪里找到的解决方案忘记了,但方法奏效了:原因是我将其他库(某不愿透露姓名的PMDK)和Boost一起使用,然后可能是两个库使用了相同的宏变量,把Boost的头文件include放在最前面就好了。
如果有人遇到了相同的问题,可以考虑试一下交换include顺序,可能就是不同库碰巧使用了同一宏变量呢= =