|
Boost Users : |
From: misha_at_[hidden]
Date: 2007-02-07 05:12:47
Hello,
I wonder if anyone could help me with my problem.
I'm trying to serialize my project's data. Beeing new to the boost libs I
started with simple tutorial example. Today is the 3rd day I'm unable to
launch a serialization of an object of the simpliest Vertex class
containing 2 double values.
The errors I get follow this patern:
[mack/.../]$ g++ -Wall -o main test3.cpp
/tmp/ccQkfdAS.o
(.gnu.linkonce.t._ZN5boost7archive18text_oarchive_implINS0_13text_oarchiveEED2Ev+0x31):
In function
`boost::archive::text_oarchive_impl<boost::archive::text_oarchive>::~text_oarchive_impl()':
: undefined reference to
`boost::archive::basic_text_oprimitive<std::basic_ostream<char,
std::char_traits<char> > >::~basic_text_oprimitive()'
The problem is in line : boost::archive::text_oarchive oa (ofs);
Any ideas? IMHO it's either compilation issue ( should I include any
additional libs to cmd line?) or header order/lacking.
To be sure I didn't miss anything else let me include the whole code:
//CODE
#include <iostream>
#include <vector>
#include <functional>
#include <algorithm>
#include <fstream>
#include <boost/archive/text_oarchive.hpp>
#include <boost/archive/text_iarchive.hpp>
#include <boost/serialization/vector.hpp>
//using namespace std;
//using namespace boost::serialization;
class Vertex {
private:
friend class boost::serialization::access;
public:
double x;
double y;
Vertex() {} // Serialization requires a default constructor
Vertex(double newX, double newY) : x(newX), y(newY) {}
double getX() const { return x; }
double getY() const { return y; }
void dump() {
std::cout << x << " " << y << std::endl;
}
};
BOOST_IS_ABSTRACT(Vertex)
namespace boost {
namespace archive {
template<class Archive>
void serialize(Archive & ar, Vertex & vtx,
const unsigned int version) {
ar & vtx.x;
ar & vtx.y;
}
} // namespace serialization
} // namespace boost
int main() {
Vertex v1(1.5, 2.5);
std::ofstream ofs("myfile.vtx");
boost::archive::text_oarchive oa(ofs);
oa << v1;
ofs.close();
return 0;
}
// END CODE
I use g++ (GCC) 3.4.4 20050721 (Red Hat 3.4.4-2) Fedora Core
Boost ver. 1.32
Thanks in advance for any feedback.
Regards
Misha
Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net