Hi,

probably has been asked already thousand of times but I'm stuck currently with some code:

Assuming I have the following files (The Base class Action is serialized in the same way):

File: Ping.h

#include "Action.h"

    
class Ping : public Action {

    
    public:

    
    void operator()();
    Ping();
    Ping* clone() const;
    ~Ping();

    
    template <typename Archive>
    void serialize(Archive& ar, const unsigned int);

    
};

    
BOOST_CLASS_EXPORT_KEY2(Ping, "Ping");


File: Ping.cpp

#include "Ping.h"

#include <iostream>

#include <boost/serialization/base_object.hpp>

#include <boost/serialization/export.hpp> #include <boost/serialization/tracking.hpp>

#include "Action.h"

#include "system.h"

#include "pong.h"

#include "serializerdeserializer.h"

#include "system.h"
#include "connection.h" #include "communication.h"
void Ping::operator()() { }
Ping::Ping() { }
Ping* Ping::clone() const {
Ping* ping = new Ping(*this);
return ping;
}

template <typename Archive> void Ping::serialize(Archive& ar, const unsigned int) { ar & BOOST_SERIALIZATION_BASE_OBJECT_NVP(Action); }

Ping::~Ping() {}

BOOST_CLASS_EXPORT_IMPLEMENT(Ping);

BOOST_CLASS_TRACKING(Ping, boost::serialization::track_never);

If I now compile the project into a library. And link this library to a different project.

If I try to serialize the class now it doesn't work.

I get the following error:

unregistered class - derived class not registered or exported

According to the boost documentation I need to use BOOST_CLASS_EXPORT_KEY in the header file and BOOST_CLASS_EXPORT_IMPLEMENT in the corresponding cpp file.

What did I miss?

Regards,

Wolfgang