[英]Using Boost Serialize With A Qt Plugin
全部,我正在嘗試使用boost序列化Qt插件基礎結構。 我的插件基礎結構的簡要說明-所有插件都是工廠,我們稱它們為ObjectFactories。 每個插件.so / .dll由兩個類構造
我的問題是,當我從插件(在控制台測試程序中)序列化對象時,出現derived class not registered or exported
的derived 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
如果有人可以提供任何建議,將不勝感激。 我很高興添加我需要的更多資源。 重要說明 ,兩個類( ObjectFactory
和DerivedObject
)存在於同一*。中,所以我不知道這是否重要。
好,知道了...
在我的基本標題和派生標題中:
#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.