下面是示例代码:
//ColorView.h
class CColorView : public CView
{
public:
DECLARE_DYNCREATE(CColorView )
}
//ColorView.cpp
IMPLEMENT_DYNCREATE(CColorView , CView)
BEGIN_MESSAGE_MAP(CColorView, CView)
......
END_MESSAGE_MAP()//ShowView.h
class CShowView : public CColorView
{
public:
DECLARE_DYNCREATE(CShowView)
}
//ShowView.cpp
IMPLEMENT_DYNCREATE(CShowView, CColorView)
BEGIN_MESSAGE_MAP(CShowView, CColorView)
.......
END_MESSAGE_MAP()
但是现在编译时却出现:
--------------------Configuration: Test - Win32 Debug--------------------
Linking...
Creating library output/Library.lib and object output/Library.exp
ShowView.obj : error LNK2001: unresolved external symbol "public: static struct CRuntimeClass const CColorView ::classCColorView " (?classCColorView@CColorView@@2UCRuntimeClass@@B)
ShowView.obj : error LNK2001: unresolved external symbol "protected: static struct AFX_MSGMAP const CColorView::messageMap" (?messageMap@CColorView@@1UAFX_MSGMAP@@B)
output/Test.exe : fatal error LNK1120: 2 unresolved externals
Error executing link.exe.PEditor.exe - 3 error(s), 0 warning(s)
//ColorView.h
class CColorView : public CView
{
public:
DECLARE_DYNCREATE(CColorView )
}
//ColorView.cpp
IMPLEMENT_DYNCREATE(CColorView , CView)
BEGIN_MESSAGE_MAP(CColorView, CView)
......
END_MESSAGE_MAP()//ShowView.h
class CShowView : public CColorView
{
public:
DECLARE_DYNCREATE(CShowView)
}
//ShowView.cpp
IMPLEMENT_DYNCREATE(CShowView, CColorView)
BEGIN_MESSAGE_MAP(CShowView, CColorView)
.......
END_MESSAGE_MAP()
但是现在编译时却出现:
--------------------Configuration: Test - Win32 Debug--------------------
Linking...
Creating library output/Library.lib and object output/Library.exp
ShowView.obj : error LNK2001: unresolved external symbol "public: static struct CRuntimeClass const CColorView ::classCColorView " (?classCColorView@CColorView@@2UCRuntimeClass@@B)
ShowView.obj : error LNK2001: unresolved external symbol "protected: static struct AFX_MSGMAP const CColorView::messageMap" (?messageMap@CColorView@@1UAFX_MSGMAP@@B)
output/Test.exe : fatal error LNK1120: 2 unresolved externals
Error executing link.exe.PEditor.exe - 3 error(s), 0 warning(s)
protected:
//{{AFX_MSG(CColorView)
// NOTE - the ClassWizard will add and remove member functions here.
//}}AFX_MSG
DECLARE_MESSAGE_MAP()3.在CShowView.h中加入:
protected:
//{{AFX_MSG(CShowView)
// NOTE - the ClassWizard will add and remove member functions here.
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
class __declspec(dllexport) CColorView……………………
这时候应该要换成class __declspec(dllimport) CColorView…………
这才正确。呵呵。