我收到链接器错误,无法找出问题的根源。我希望你能帮帮我!创建类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文件
答案 0 :(得分:1)
您尚未定义在类ClMyClass
中声明的构造函数和析构函数。
ClMyClass::ClMyClass(){
//implementation
}
ClMyClass::~ClMyClass(){
//implementation
}
通常在包含所有类'成员函数'实现的单独.cpp
文件中完成。
答案 1 :(得分:0)
在您的实现中,您尚未实现虚拟功能。如果使用虚函数,则必须实现所有虚拟函数,即使不使用它们也是如此。否则,链接器将出现您正在看到的未解决的符号错误。
如果某个类中没有使用某个函数,则不会出现错误,因为没有对该函数的引用。因此链接器不会看到它并且不会抱怨。对于虚函数,这是不同的,因为它们总是生成的。