Boost Serialisierung ohne RTTI mit VC++ 2005
-
Hi!
Während ich Boost::Serialization versucht habe ans Laufen zu bekommen, habe ich im Manual gelesen, dass die Library auch ohne RTTI funktionieren würde.
Nun würde ich RTTI wenns irgendwie geht gerne vermeiden. Leider kompiliert die Sache nicht mehr, wenn ich unter MS VC++ 2005 SP 1 das RTTI abschalte.
Beim Kompilieren erhalte ich folgende Warnung:libs\boost_1_34_1\boost/smart_cast.hpp(76) : warning C4541: 'dynamic_cast' für polymorphen Typ 'boost::archive::detail::basic_iarchive' mit /GR- verwendet; unvorhersehbares Verhalten möglich
libs\boost_1_34_1\boost/smart_cast.hpp(87): Siehe Verweis auf die Instanziierung der gerade kompilierten Funktions-template "T boost::smart_cast_impl::reference<T>::polymorphic:
:cast<U>(U &)".
with
[
T=boost::archive::xml_iarchive &,
U=boost::archive::detail::basic_iarchive
]Beim Ausführen erhalte ich folgende Runtime Exception:
Unbehandelte Ausnahme bei 0x7c81eb33 in test.exe: Microsoft C++-Ausnahme: std::__non_rtti_object an Speicherposition 0x0012faf4..
Und zwar an dieser Stelle:
int main(int argc, char* argv[]) { const char* filename = "D:\\temp.xml"; { Test s(27); // make an archive std::ofstream ofs(filename); assert(ofs.good()); boost::archive::xml_oarchive oa(ofs); oa << BOOST_SERIALIZATION_NVP(s); // <-- HIER } return 0; }Wie bekomme ich Boost::Serialization ohne RTTI zum Funktionieren?
Mfg NeuroCoder
-
*push*
-
NeuroCoder schrieb:
Wie bekomme ich Boost::Serialization ohne RTTI zum Funktionieren?
Wenn Du keinen alten Compiler/Laufzeitumgebung benutzt, gibt es dafür keinerlei Grund.
-
RTTI gehört nunmal zum ISO-C++-Standard. Ich bezweifel mal, das es klug ist, RTTI nicht verwenden zu wollen. Dann darf man sich zumindest nicht wundern, das nicht alles funktioniert.