Serialisation portable ? Boost ok mais...

insomniak

Membre enregistré
23 Août 2005
3
0
Salut,

Ca va faire quelques jours que je cherche dans tous les sens comment serialiser un objet dans un fichier binaire et j'etais tombé sur la librairie boost car j'ai une contrainte : la portabilité.
Donc vaillant noob en developpement sous mac, j'utilise xcode, j'installe la librairie (via la compilation de la librairie car j'ai installé via fink mais la derniere version dispo ne propose apparement pas la serialisation). Je créé un projet bateau, deja pour voir si ca fonctionne.
Voici comment je procede (ps : pas de moquerie ^^ j'ai dit que je debutais en dev sous mac...lol, je suis un peu dérouté)

J'ouvre xcode, nouveau projet, command line tool, c++ tool.
Je colle mon code dedans (exemple fourni sur le site de boost) dont voici la copie :

Bloc de code:
#include <fstream>
#include <boost/archive/text_oarchive.hpp>
#include <boost/archive/text_iarchive.hpp>

using namespace boost::archive;

class gps_position
{
private:
    friend class boost::serialization::access;
    template<class Archive>
    void serialize(Archive & ar, const unsigned int version)
    {
        ar & degrees;
        ar & minutes;
        ar & seconds;
    }
    int degrees;
    int minutes;
    float seconds;
public:
    gps_position(){};
    gps_position(int d, int m, float s) :
        degrees(d), minutes(m), seconds(s)
    {}
};

int main() {

    std::ofstream ofs("toto.tes");
    const gps_position g(35, 59, 24.567f);
    {
        text_oarchive oa(ofs);
        oa << g;
    }

    gps_position newg;
    {
        std::ifstream ifs("toto.tes", std::ios::binary);
        text_iarchive ia(ifs);
        ia >> newg;
    }
    return 0;
}

C'est censé créer un nouvel objet, le serialiser dans un fichier puis le deserialiser à partir du fichier.
Dans les options du projet j'ai rensigné les champs "headers search path" à /usr/local/include/boost-1_33_1 et "libraries search" path à /usr/local/lib
J'ai essayé de compiler avec zero link activé, ca compile mais à l'execution ca foire en me donnant une erreur que voici :

[Session started at 2006-01-06 15:06:19 +0100.]
ZeroLink: unknown symbol '__ZTIN5boost7archive6detail17basic_iserializerE'

essai++3 has exited due to signal 6 (SIGABRT).

Et sans zerolink : il me met un message "undefined symbols" et me liste tous les symboles de boost... :(

Donc voila, je lutte comme un cake, je ne comprend pas pourquoi ca ne fonctionne pas et ça me lourde car je ne peux pas avancer :(

Est-ce que quelqu'un s'est deja servi de la serialisation boost ?
Quelqu'un connaitrait-il une librairie pour serialiser qui soit portable sur d'autres os ?
Quelqu'un pourrait-il faire l'essai de s'en servir et voir si ca fonctionne chez lui ? si ca marche, pourriez vous donner la demarche ?

Je suis dans une semoule des plus liquides et je nage royalement dedans ^^
Merci d'avance
@ bientot