我正在尝试从使用-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 中的所有方法都已实现(作为空存根)
我无法编译共享库 -frtti。有没有办法解决这个问题?