Boost logo

Boost :

Subject: [boost] serialization linking issue - mac os x 10.6 + boost 1.45
From: John Clayton (john_clayton_at_[hidden])
Date: 2011-01-07 14:49:52


Hi

i've got a new problem with my code, now that I'm compiling and linking against the 1.45 boost libraries.

When I compile and link, I now get these errors at the link stage:

  "boost::serialization::version<Model::KeyValue<QPointF> >::value", referenced from:

      __ZN5boost13serialization7versionIN5Model8KeyValueI7QPointFEEE5valueE$non_lazy_ptr in libDataModel.a(Project.o)

      __ZN5boost13serialization7versionIN5Model8KeyValueI7QPointFEEE5valueE$non_lazy_ptr in libRendering.a(EditorDocument.o)

      __ZN5boost13serialization7versionIN5Model8KeyValueI7QPointFEEE5valueE$non_lazy_ptr in libDataModel.a(Serialization.o)

     (maybe you meant: __ZN5boost13serialization7versionIN5Model8KeyValueI7QPointFEEE5valueE$non_lazy_ptr)

I have version definitions for the template types using boost serialization, along the form of:

namespace boost {
    namespace serialization {
        template<typename T, int scale, int defaultCurveType>
        struct version< Model::PropertyArrayT<T, scale, defaultCurveType> >
        {
            typedef mpl::int_<1> type;
            typedef mpl::integral_c_tag tag;
            BOOST_STATIC_CONSTANT(unsigned int, value = version::type::value);
        };
        
        template<typename T>
        struct version< Model::KeyValue<T> >
        {
            typedef mpl::int_<1> type;
            typedef mpl::integral_c_tag tag;
            BOOST_STATIC_CONSTANT(unsigned int, value = version::type::value);
        };
        
    }
}

I tried instantiating (in the .cpp of the header where this stuff is declared), like this:
        boost::serialization::version< Model::KeyValue<QPointF> > a;

but the link error for this type still persists. The code is compiled into a library, and then the link step fails on the application. I hope its not the linker being extra ingenious and throwing this fake definition away.

Can anyone see what I'm doing wrong? The code works OK if I use/link against boost 1.42.

Thanks

--
John Clayton
Skype: johncclayton

Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk