0

リンカ エラーが発生し、問題の原因を突き止めることができません。あなたが私を助けてくれることを願っています!クラスのオブジェクトを作成するときに、エラーがすでに発生していますClMyClass

2 つのエラー:

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 に答える