boost序列化未定义的参考

这个问题在这里已经有了答案:

  • 什么是未定义的引用/未解析的外部符号错误,我该如何解决它? 27个答案

  • 其实,对这个问题的编辑会很好,但是,我认为我有一个想法来回答这个问题:看起来你正试图单独编译一个函数模板。

    这意味着您正在执行以下操作:

    g++ ScenarioResult.cpp -lboost_serialization
    

    这是抛出错误。

    ScenarioResult :: serialize是a template function ,这意味着它根据传递给的模板参数的类型被实例化。 所以,在编译时,编译器并不知道类型,因此不能生成代码。

    一个快速的解决方法是to move the implementation of your serialize method into the header file of the class 。 或者, explicitly instansiate it in the cpp file如下所示:

    void ScenarioResult::serialize<boost::archive::text_oarchive>(boost::archive::text_oarchive &ar, const unsigned int);
    
    链接地址: http://www.djcxy.com/p/62919.html

    上一篇: boost serialization undefined reference

    下一篇: Stack Overflow