c++ - Boost 序列化和 MFC : "cannot open file ' libboost_serialization-vc141-mt-s-x32-1_69. lib'"

标签 c++ boost mfc

我目前正尝试在我的项目中使用 boost 进行序列化。我首先遵循这个演示并确保我可以在 Visual Studio 上得到 boost :

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

完成此演示后,我将 boost 添加到我遇到了一些问题的项目中。当我将“使用标准 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>

我是 boost 的新手,所以我想知道为什么会发生这种情况以及这些对于数据存储的必要性。如果是基本问题,我将如何修复它?

最佳答案

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

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

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

关于c++ - Boost 序列化和 MFC : "cannot open file ' libboost_serialization-vc141-mt-s-x32-1_69. lib'",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55405204/

相关文章:

C++ - 通过多线程同时播放多个蜂鸣声?

c++ - 虚函数与指针转换的比较

c++ - 在使用中删除 boost 功能

c++ - 是否有模板元程序来确定编译器在编译时的字节顺序?

c++ - 如何制作解析指针的存档?

c++ - 如何检查组合框是下拉列表还是下拉列表?

visual-c++ - VS 2013 找不到资源编译器DLL。请确保路径正确

C++ - 代码在 Debug 中编译但在 Release 中不编译

C++:如何将对象传递给另一个对象构造函数?

winapi - 如何获取 CPrintDialogEx 中属性表的句柄