c++ - 对 boost 序列化函数的 undefined reference

标签 c++ qt boost

使用 boost 序列化时,我在使用序列化头文件时遇到了很多错误,如下所示:

/home/saikumar/Downloads/boost_1_61_0/boost/archive/text_iarchive.hpp:117: error: undefined reference to `boost::archive::text_iarchive_impl::text_iarchive_impl(std::istream&, unsigned int)'

我尝试了 stackoverflow 中所有可能的链接( 123 和其他几个链接)。

他们说使用 LIBS += -lboost_system 或其他,但 boost 文档说它是一个仅 header 的库 Boost setup ,这意味着它不需要任何库链接,即使我尝试在 boost 文件夹中搜索该库,我也找不到它。

我遵循了在 boost 设置过程中执行的相同步骤,但我找不到任何东西。这是我正在测试的代码:

#include <fstream>
#include <boost/archive/text_iarchive.hpp>
#include <boost/archive/text_oarchive.hpp>
#include <boost/serialization/string.hpp>
#include <boost/serialization/vector.hpp>
#include <vector>

class test
{
public:

    std::vector<int> test1;
    std::string test2;

    test()
    {
    }

    test(std::vector<int> h, std::string i):test1(h), test2(i)
    {
    }
private:
    friend class boost::serialization::access;
    template<class Archive> void serialize(Archive & ar, const unsigned int version)
    {
        ar & test1;
        ar & test2;
    }
};

int main(int argc, char *argv[])
{
    test obj;

    obj.test1.push_back(1);
    obj.test1.push_back(3);
    obj.test1.push_back(6);
    obj.test1.push_back(74);
    obj.test1.push_back(43);
    obj.test1.push_back(12);
    obj.test1.push_back(8);
    obj.test1.push_back(13);

    obj.test2 ="jsahdjfkadshflkssfjdslfk";


    std::ofstream file("myfile.FILE");
    boost::archive::text_oarchive oo(file);
    oo<<obj;

    test obj1;

    std::ifstream ifs("myfile.FILE");
    boost::archive::text_iarchive ia(ifs);
    ia >> obj1;

    return 0;
}

最佳答案

boost/archive/text_iarchive.hppBoost.Serialization 的一部分这绝对不是一个只有 header 的库。

该库通常称为 boost_serialization (libboost_serialization.so),另外您还需要 boost_wserialization (libboost_wserialization.so) code>) 如果您想将 wchar_t 与它一起使用。

关于c++ - 对 boost 序列化函数的 undefined reference ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39700537/

相关文章:

堆上的 C++ 数组

c++ - 使用 std::tuple_cat 模板实例化 decltype 和 declval

c++ - Qt 中的 Dbus org.bluez 实现

c++ - 作为 C++ 初学者,我应该开始使用 boost 吗?

c++ - 在构造函数中初始化 Boost shared_ptr

c++ - C++ 中的左值 substr 方法

c++ - Qt C++ QTextEdit 打字时计算字数

c++ - QWebView,如何判断这个链接是否是新窗口?

python - 在 Qt 应用程序中包含 Python.h 会导致对 Qt 函数的 undefined reference

c++ - 在类中使用 boost::numeric::odeint