Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 共享库中的抽象类_C++_Shared Libraries_Abstract Class_Linker Errors_Pure Virtual - Fatal编程技术网

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;
};

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

你能发布给你错误的代码吗。