全部,我正在尝试使用 boost 序列化 Qt 插件基础结构。我的插件基础结构的快速描述——所有插件都是工厂,我们称它们为 ObjectFactories。每个插件 .so/.dll 都是由两个类构造的
我的问题是,当我从我的插件(在控制台测试程序中)序列化一个对象时,我得到一个异常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
在derivedobject.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>
我必须让这两者匹配。
关于c++ - 将 Boost Serialize 与 Qt 插件一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14345695/