C++ 共享库中的抽象类
我有一个普通的抽象类,它有两个纯虚方法。类本身是共享库的一部分。共享库本身的编译是正常的。但是,当库链接到另一个程序时,该程序有另一个类,该类派生自共享库中的抽象类并定义纯虚拟方法,我会得到以下链接器错误 我是这样编译的C++ 共享库中的抽象类,c++,shared-libraries,abstract-class,linker-errors,pure-virtual,C++,Shared Libraries,Abstract Class,Linker Errors,Pure Virtual,我有一个普通的抽象类,它有两个纯虚方法。类本身是共享库的一部分。共享库本身的编译是正常的。但是,当库链接到另一个程序时,该程序有另一个类,该类派生自共享库中的抽象类并定义纯虚拟方法,我会得到以下链接器错误 我是这样编译的 g++ -I../path/to/the/library main.cpp derived.cpp -L../path/to/the/library -lsomename -o shared 链接器错误为: libsomename.so:对“AbstractClass::m
g++ -I../path/to/the/library main.cpp derived.cpp -L../path/to/the/library -lsomename -o shared
链接器错误为:
libsomename.so:对“AbstractClass::method()”的未定义引用
这就像抽象类无法访问其纯虚拟方法一样,但我不会尝试在库中的任何位置创建抽象类的任何实例
有什么问题吗?定义抽象类时,必须使所有函数都是虚拟的,并且以=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;
};
确保你这样做了,它应该会工作。你能发布给你错误的代码吗。