我目前正在尝试从这样定义的 c++ 接口继承:
class IWindow: public Initializable
{
public:
virtual ~IWindow(void) =0;
virtual BOOL IsVisible(void) =0;
virtual void Show(BOOL inbShow) =0;
};
这个接口是在一个与试图继承它的类不同的项目中定义的。该类定义如下:
#include "IWindow.h"
class Win32Window: public IWindow
{
HGLRC m_renderingContext;
HWND m_win32Handle;
HDC m_deviceContext;
BOOL m_bVisible;
public:
Win32Window(void);
virtual ~Win32Window(void);
virtual void Initialize(void);
virtual void Destroy(void);
virtual BOOL IsVisible(void);
virtual void Show(BOOL inbShow);
};
我在 IWindow 的公开定义的纯虚拟构造函数上遇到了一个外部符号问题,确切的错误消息如下:
1>Win32Window.obj : 错误 LNK2019: 无法解析的外部符号“public: virtual __thiscall IWindow::~IWindow(void)” (??1IWindow@@UAE@XZ) 在函数“public: virtual __thiscall Win32Window::~Win32Window( void)" (??1Win32Window@@UAE@XZ)
我似乎无法理解为什么会发生这个错误,只要我知道一个类是否在另一个项目中应该无关紧要,只要文件被#included 到继承类的头文件中。谁能向我解释这个错误并可能提供解决这个错误的方法?我最终计划将 IWindow 类作为 dll 的一部分,但在此之前,我需要能够使用多个不同项目中的文件来编译和测试这个解决方案。