Boost序列化和MFC:“无法打开文件'libboost_serialization-vc141-mt-s-x32-1_69.lib'”

时间:2019-03-28 19:09:47

标签: c++ boost mfc

我目前正在尝试在项目中使用boost进行序列化。我从遵循此演示开始,并确保可以在Visual Studio上得到提升:

https://www.boost.org/doc/libs/1_69_0/libs/serialization/example/demo.cpp

在完成此演示之后,我在遇到一些问题的项目中添加了内容。当我将“使用标准Windows库”更改为“在静态库中使用MFC”时,出现错误:

cannot open file 'libboost_serialization-vc141-mt-s-x32-1_69.lib'

更具体地说,以下情况会发生这种情况。

#include <boost/archive/text_iarchive.hpp>
#include <boost/archive/text_oarchive.hpp>
#include <boost/serialization/list.hpp>

我是新手,所以我想知道为什么会发生这种情况以及这些对于数据存储的必要性。如果很基础,我将如何解决呢?

1 个答案:

答案 0 :(得分:0)

错误消息文件名中的'x32'表示“在静态库中使用MFC”正在尝试与32位增强库链接,文件名中的s表示它需要静态库,参见:how can I decode boost library namimg

您的Boost库很可能是在64位模式下构建的,并且可能不是静态的。您可以从库文件名中看出:64位库的文件名中带有'x64',例如:libboost_serialization-vc141-mt-x64-1_69.lib是一个64位库,它不是为静态链接到C ++标准库而构建的。和编译器运行时支持库,因为它的文件名 not 中没有-s

在这种情况下,解决方案是使用runtime-link=static以32位模式构建boost序列化库,请参见boost getting stared on windows