Używam Boost :: iostreams do jednoczesnego zapisu na mojej konsoli i pliku. Kiedy używam eclipse do debugowania (oczywiście z gdb), otrzymuję ostrzeżenie, które mówi, że nie znaleziono symbolu RTTI dla jednej z klas, których używam z Boost :: iostreams.komunikat ostrzegawczy Nie znaleziono symbolu RTTI podczas używania boost :: iostreams
Oto minimalny kod do odtworzenia problemu.
#ifndef BOOST_IO_STREAM_H_
#define BOOST_IO_STREAM_H_
#include <fstream>
#include <boost/iostreams/tee.hpp>
#include <boost/iostreams/stream.hpp>
using boost::iostreams::tee_device;
using boost::iostreams::stream;
typedef tee_device<std::ostream, std::ofstream> TeeDevice;
typedef stream<TeeDevice> TeeStream;
#endif /* BOOST_IO_STREAM_H_ */
int
main()
{
/* A config file to output experiment details */
std::string self_filename = "./experimentconfig.txt";
std::ofstream fconfig(self_filename.c_str());
TeeDevice my_tee(std::cout, fconfig);
TeeStream cool_cout(my_tee);
cool_cout << "Output to file and console during experiment run" << std::endl;
return 0;
}
Kiedy przekroczenia linii TeeStream cool_cout(my_tee);
trakcie debugowania, i otrzymać poniższe ostrzeżenia:
warning: RTTI symbol not found for class 'boost::iostreams::stream<boost::iostreams::tee_device<std::ostream, std::basic_ofstream<char, std::char_traits<char> > >, std::char_traits<char>, std::allocator<char> >'
warning: RTTI symbol not found for class 'boost::iostreams::stream_buffer<boost::iostreams::tee_device<std::ostream, std::basic_ofstream<char, std::char_traits<char> > >, std::char_traits<char>, std::allocator<char>, boost::iostreams::output>'
Ostrzeżenia powtarzają się, gdy obiekt cool_cout napotyka. Jak to naprawić? Oczywiście programy używające tego kodu działają i nie mam z tym żadnych problemów. Ostrzeżenia nie powinny być ignorowane i istnieje pewna wiedza na temat symboli RTTI, które należy zdobyć. (Nie mogę skompilować z -f nortti, a następnie wykonywalne narzekania, że rtti powinno zdecydowanie umożliwić korzystanie z iostreams)
dzięki za odpowiedź. Chciałbym pójść z wyborem2, gdybym tylko miał wystarczająco dużo czasu. tak czy inaczej będę odpowiadał deweloperom gdb. Nie mam wyboru4. Właśnie użyłem biblioteki Boost i jak mam jej nie używać? – hAcKnRoCk