我正在尝试从一个使用了-fno-rtti编译的共享库进行子类化。不幸的是,我的代码库中的其他库需要-frtti。因此,由于超类没有typeinfo结构体,我得到了链接错误。
在正常编译中收到的错误:
out.o: in function typeinfo for MyClass:myclass.cpp(.data.rel.ro.<cpp magic>): error: undefined reference to 'typeinfo for NetlinkListener'
我想要继承的类是libsysutils中的一个Android类(为了节省空间进行了一些剪裁):
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;
};
我的存根看起来像这样:
class MyClass: public NetlinkListener {
public:
MyClass();
virtual ~MyClass();
int start();
int stop();
protected:
virtual void onEvent(NetlinkEvent *evt);
};
MyClass中的所有方法都已实现(为空的存根)
我无法编译-shared library -frtti。有没有什么方法可以解决这个问题?