【发布时间】:2013-07-29 13:38:34
【问题描述】:
我收到链接器错误,无法确定问题的根源。我希望你可以帮助我!在创建ClMyClass类的对象时已经出现该错误。
两个错误:
Error 18 error LNK2019: unresolved external symbol "public: virtual __thiscall ClMyClass::~ClMyClass(void)" (??1ClMyClass@@UAE@XZ) referenced in function "void __cdecl Test1(void)" (?Test1@@YAXXZ)
Error 19 error LNK2019: unresolved external symbol "public: __thiscall ClMyClass::ClMyClass(void)" (??0ClMyClass@@QAE@XZ) referenced in function "void __cdecl Test1(void)" (?Test1@@YAXXZ)
//Test.cpp
#include "StdAfx.h"
#include "MyClass.hpp"
void Test1(){
ClMyClass oHandle;
}
//ClMyClass.hpp
class ClMyClass: public ClMyClassBase
{
public:
ClMyClass(void);
virtual ~ClMyClass(void);
//methods...
}
//ClMyClass.cpp
ClMyClass::ClMyClass(void):ClMyClassBase(),m_nCallbackError(ERROR_NOT_INITIALIZED), m_eState(eUnknown)
{
//initialize members
}
ClMyClass::~ClMyClass(void)
{
Unassign();
}
编辑:添加 .cpp 文件
【问题讨论】:
-
您需要定义编译器抱怨的两个函数:
ClMyClass和~ClMyClass。声明它们而不实现它们通常会导致这种错误。 -
@Nbr44 但这些是标准的构造函数和解构函数。我认为他们不需要定义?
-
@Borgleader 这是一个非常糟糕的副本。下次在您的搜索条件中加入 [c++-faq]?
-
@sehe 我用了相关的问题列表,我没有搜索
-
@tzippy 从您编写原型的那一刻起,他们就不再是“标准”ctor 和 dtor。只有当您不声明它们时,默认值才会出现。如果这样做,您也有责任定义它们。