2

我有一个普通的抽象类,它有几个纯虚方法。类本身是共享库的一部分。共享库本身的编译是可以的。但是,当该库链接到另一个程序时,该程序具有从共享库中的抽象类派生的另一个类并定义纯虚拟方法,我收到以下链接器错误。

我这样编译..:

g++ -I../path/to/the/library main.cpp derived.cpp -L../path/to/the/library -lsomename -o shared 

链接器错误是:

libsomename.so:未定义对“AbstractClass::method()”的引用

就像抽象类无法访问其纯虚拟方法一样,但我不会尝试在库中的任何位置创建抽象类的任何实例。

可能是什么问题呢?

4

1 回答 1

1

定义抽象类时,您必须使所有函数为虚拟函数,并且以 =0 结尾,即:

class DPReporterI
{
public:
    virtual uint32 getProviderCount()=0;
    virtual uint32 getProviderId(uint32 index)=0;

    virtual uint32 getLastRate(uint32 id)=0;
    virtual void getName(uint32 id, char* buff, uint32 size)=0;
};

确保你这样做,它应该工作。

于 2010-04-19T06:41:49.183 回答