2

나는 두 개의 순수 가상 메서드가있는 일반 추상 클래스가 있습니다. 클래스 자체는 공유 라이브러리의 일부입니다. 공유 라이브러리 자체의 컴파일은 정상입니다. 그러나 라이브러리가 공유 라이브러리의 추상 클래스에서 파생되고 순수 가상 메서드를 정의하는 또 다른 클래스를 가진 다른 프로그램에 연결되면 다음과 같은 링커 오류가 발생합니다.공유 라이브러리의 추상 클래스

은이 같은 컴파일 .. :

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

링커 에러이다

libsomename.so : 미정 AbstractClass '참조 : 메서드()

그것은 추상 클래스가 순수 가상 메서드에 액세스 할 수없는 것과 같지만 라이브러리의 추상 클래스의 인스턴스를 만들지 않으려 고합니다.

무엇이 문제 일 수 있습니까? 추상 클래스를 정의 할 때

답변

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

는이 작업을 수행해야합니다 그것은 작동합니다.

+0

모든 것을 처음부터 끝까지 ... – JTom

+1

코드를 게시하면 오류를 줄 수 있습니다. – Lodle