class AFX_EXT_CLASS CEthernet
{
public:
    virtual BOOL Open() = 0;
};

class AFX_EXT_CLASS CTcpServer : public CEthernet
{
public:
    BOOL Open();
};

class AFX_EXT_CLASS CTcpClient : public CEthernet
{
public:
    BOOL Open();
};

CTcpServer와 CTcpClient의 구현은 cpp파일내에 구현하였고 위에 것들은 모두 헤더파일에 선언만 한 상태입니다

CEthernet에서 BOOL Open();으로 선언하면 되는데 가상함수로 만들기위해(구현을 안할거라 순수가상함수로 virtual BOOL Open() = 0; 선언) virtual만 붙으면

lnk1120 : 3개의 확인할 수 없는 외부 참조입니다
lnk2001 1개
lnk2019 3개의 에러가 뜹니다

AFX_EXT_CLASS를 제거하면 동작은 합니다만 동적 라이브러리를 만들기 위해서 저 매크로는 반드시 필요하지 않나요?(라이브러리에 클래스 넣기 위함)

AFX_EXT_CLASS와 virtual 둘 모두 사용시 구성형식에서 응용프로그램/동적라이브러리 둘다 안됩니다

무엇이 문제일까요?