Boost Xml Serializion mit .h und .cpp



  • Der folgende Testcode soll dafür genützt werden, ein Objekt der Klasse Person im xml-Format zu speichern. Allerdings erhalte ich einen Linkerfehler. Verwende ich den Bsp. Code von dieser Seite funktioniert aber alles. (Achtung leicht abgeändert, da ich im XML-Format speichern will. Solange alles in einem File steht funktioniert das speichern.

    Link zum Quellcode des eigentlichen Bsp.
    http://www.highscore.de/cpp/boost/serialisierung.html#zeiger_und_referenzen

    Wenn ich allerdings eine .h und .cpp erstelle geht nix mehr.

    Hat wer ne Idee?

    Person.h

    #include <boost/archive/text_oarchive.hpp> 
    #include <boost/archive/text_iarchive.hpp>
    
    class Person
    {
    
    public:
    	Person(void);
    	Person(int);
    	~Person(void);
    private:
    	int age;
    
    	friend class boost::serialization::access; 
    	template <typename Archive> 
    	void serialize(Archive &ar, const unsigned int version); 
    
    };
    
    Person.cpp
    #include "StdAfx.h"
    #include "Person.h"
    
    Person::Person(void)
    {
    
    }
    
    Person::Person(int aget) 
      { 
    	  age = aget;
      } 
    Person::~Person(void)
    {
    }
    
    template <typename Archive> 
    void serialize(Archive &ar, const unsigned int version){
    
    	ar & BOOST_SERIALIZATION_NVP(age);
    }
    

    Filepath der Fehlermeldung wurde verändert.

    Fehler 4 error LNK2019: Verweis auf nicht aufgelöstes externes Symbol ""public: void __thiscall Person::serialize<class boost::archive::xml_oarchive>(class boost::archive::xml_oarchive &,unsigned int)" (??serialize@Vxml\_oarchive@archive@boost@@@Person@@QAEXAAVxml\_oarchive@archive@boost@@I@Z)" in Funktion ""public: static void \_\_cdecl boost::serialization::access::serialize(class boost::archive::xml\_oarchive &,class Person &,unsigned int)" (??serialize@Vxml_oarchive@archive@boost@@VPerson@@@access@serialization@boost@@SAXAAVxml_oarchive@archive@2@AAVPerson@@I@Z)". C:\*\BoostExample\BoostExample.obj

    Fehler 2 error LNK1120: 1 nicht aufgelöste externe Verweise. *\BoostExample\Debug\BoostExample.exe 1





  • Danke. Genau das wars 😛


Anmelden zum Antworten