[英]Using an interface from another project in VS2012
我目前正在嘗試從這樣定義的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”中引用無效)“(?? 1Win32Window @@ UAE @ XZ)
我似乎無法理解為什么會出現這個錯誤,只要我知道一個類是否在另一個項目中,只要該文件是#included到繼承類的頭文件中就不重要了。 任何人都可以向我解釋這個錯誤,並可能提供此錯誤的解決方案嗎? 我最終計划將類IWindow作為dll的一部分,但在此之前,我需要能夠使用多個不同項目中的文件編譯和測試此解決方案。
您有關於未定義的純虛析構函數的錯誤消息。
析構函數,即使它是純虛擬的,也必須具有實現。 很可能一個包含IWindow::~IWindow()
實現的.cpp文件不包含在項目中。 這就是鏈接器無法找到它的原因。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.