Tôi sử dụng Boost :: iostreams để ghi đồng thời vào bảng điều khiển và tệp của mình. Khi tôi sử dụng eclipse để gỡ lỗi (với gdb tất nhiên), tôi nhận được một cảnh báo mà nói RTTI biểu tượng không tìm thấy cho một trong các lớp học mà tôi đang sử dụng từ Boost :: iostreams.Thông báo cảnh báo Biểu tượng RTTI không tìm thấy khi sử dụng boost :: iostreams
Đây là mã tối thiểu để tái tạo sự cố.
#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;
}
Khi tôi băng qua đường TeeStream cool_cout(my_tee);
trong gỡ lỗi, tôi nhận được những lời cảnh báo dưới đây:
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>'
Các cảnh báo được lặp đi lặp lại bất cứ khi nào cool_cout đối tượng được gặp. Làm thế nào để tôi sửa lỗi này? Tất nhiên, các chương trình sử dụng mã này hoạt động và tôi không có vấn đề gì với điều đó. Cảnh báo không được bỏ qua và có một số kiến thức ngoài kia về các biểu tượng RTTI cần đạt được. (Tôi không thể biên dịch với -f nortti sau đó thực thi than phiền rằng rtti chắc chắn nên được kích hoạt để sử dụng iostreams)
cảm ơn câu trả lời của bạn. Tôi thích đi với choice2 nếu tôi chỉ có đủ thời gian. anyways tôi sẽ tương ứng với các nhà phát triển gdb. Tôi không nhận được choice4 mặc dù. Tôi vừa sử dụng thư viện Boost và làm cách nào để không sử dụng các mẫu? – hAcKnRoCk