Tôi đang cố gắng phân lớp từ thư viện được chia sẻ với -fno-rtti. Thật không may các thư viện khác trong cơ sở mã của tôi yêu cầu -frtti. Kết quả là tôi nhận được các lỗi liên kết vì lớp cha không có cấu trúc typeinfo.Lớp phân lớp từ thư viện được chia sẻ được biên dịch với -fno-rtti
Lỗi nhận trong một bộ sưu tập bình thường:
out.o: in function typeinfo for MyClass:myclass.cpp(.data.rel.ro.<cpp magic>): error: undefined reference to 'typeinfo for NetlinkListener'
Lớp tôi muốn phân lớp là một lớp android trong libsysutils (snipped một chút cho không gian):
class NetlinkListener : public SocketListener {
char mBuffer[64 * 1024];
int mFormat;
public:
static const int NETLINK_FORMAT_ASCII = 0;
static const int NETLINK_FORMAT_BINARY = 1;
NetlinkListener(int socket);
NetlinkListener(int socket, int format);
virtual ~NetlinkListener() {}
protected:
virtual bool onDataAvailable(SocketClient *cli);
virtual void onEvent(NetlinkEvent *evt) = 0;
};
còn sơ khai của tôi trông giống như:
class MyClass: public NetlinkListener {
public:
MyClass();
virtual ~MyClass();
int start();
int stop();
protected:
virtual void onEvent(NetlinkEvent *evt);
};
Tất cả các phương pháp trong MyClass được thực hiện (dưới dạng phần trống)
Tôi không thể biên dịch thư viện được chia sẻ -frtti. Có cách nào để giải quyết vấn đề này không?
Bạn có thể đăng một mã mẫu về cách bạn đang cố gắng phân lớp một siêu lớp không? – Tuxdude
@Tuxdude Đã thêm tiêu đề. Không có triển khai thực hiện của lớp con (chỉ sơ khai). Mã cho siêu lớp là mã nguồn mở ASOP. –