0

我收到链接器错误,无法找出问题的根源。我希望你能帮帮我!创建类的对象时已经发生错误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 文件

4

2 回答 2

1

您尚未定义您在 class 中声明的构造函数和析构函数ClMyClass

ClMyClass::ClMyClass(){
    //implementation
}

ClMyClass::~ClMyClass(){
    //implementation
}

这通常在.cpp包含所有类“成员函数”实现的单独文件中完成。

于 2013-07-29T13:41:44.197 回答
0

在您的实现中,您尚未实现虚拟功能。如果你使用虚函数,那么你必须实现所有的虚函数,即使你不使用它们。否则,链接器将出现您看到的未解决的符号错误。

如果一个函数没有在一个类中使用,那么不会出错,因为没有引用这个函数。因此链接器不会看到它并且不会抱怨。对于虚函数,这是不同的,因为它们总是被生成的。

于 2013-07-29T13:42:32.693 回答