簡體   English   中英

使用VS2012中另一個項目的界面

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM