簡體   English   中英

使用帶有Qt插件的Boost序列化

[英]Using Boost Serialize With A Qt Plugin

全部,我正在嘗試使用boost序列化Qt插件基礎結構。 我的插件基礎結構的簡要說明-所有插件都是工廠,我們稱它們為ObjectFactories。 每個插件.so / .dll由兩個類構造

我的問題是,當我從插件(在控制台測試程序中)序列化對象時,出現derived class not registered or exportedderived class not registered or exported的異常

objectfactory.cpp / .h:

class ObjectFactory : public QObject, public [PluginInterface]
{
    //most important method
    BaseObject * createBaseObject();
}

派生的對象.h:

#include "base_object.h"

#include <boost/archive/basic_text_iarchive.hpp>
#include <boost/archive/basic_text_oarchive.hpp>

namespace MyNamespace
{

class DerivedObject : public BaseObject
{
public:
    DerivedObject();

    ~DerivedObject();

private:
    BaseObjectData<double> m_data;

    template<class Archive>
    void serialize(Archive &ar, const unsigned int version)
    {
        ar & boost::serialization::base_object<BaseObject>(*this);
        ar & m_data.data(); // T & BaseObjectData::data() - returns reference
    }
};

}

BOOST_CLASS_EXPORT_KEY(MyNamespace::DerivedObject) //Register our class for serialization/deserialization

在派生object.cpp的底部:

 BOOST_CLASS_EXPORT_IMPLEMENT(Mynamespace::DerivedObject)

但是,我仍然

what(): unregistered class - derived class not registered or exported

如果有人可以提供任何建議,將不勝感激。 我很高興添加我需要的更多資源。 重要說明 ,兩個類( ObjectFactoryDerivedObject )存在於同一*。中,所以我不知道這是否重要。

好,知道了...

在我的基本標題和派生標題中:

#include <boost/archive/basic_text_iarchive.hpp>
#include <boost/archive/basic_text_oarchive.hpp>

在我的測試程序中:

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

我不得不把這兩個配對。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM