0
我ahve一個名爲FiniteStateMachine類中聲明如下得到錯誤LNK2019當我使用std :: auto_ptr的
頭文件:FiniteStateMachine.h
class FiniteStateMachine
{
public:
//Constructor
FiniteStateMachine();
//Destructor
~FiniteStateMachine();
}
源文件:FiniteStateMachine.cpp
////////////////////////////////////////////////////////////////////////
// Constructor
////////////////////////////////////////////////////////////////////////
FiniteStateMachine::FiniteStateMachine()
:m_InitialState("")
,m_CurrentState(NULL)
,m_Running(false)
{
RegisterBaseTypes();
}
////////////////////////////////////////////////////////////////////////
// Destructor
////////////////////////////////////////////////////////////////////////
FiniteStateMachine::~FiniteStateMachine()
{
if (m_Running) Stop();
Clear();
}
和我有一個名爲FSM的heade文件,我收集它的所有類的項目
FSM.H
class ICORE_API FiniteStateMachine;
好吧我編譯它,現在想在另一個庫中使用這個類。
關於鏈接該庫的每件事都已完成。
在當我使用FiniteStateMachine與auto_ptr的客戶端類我收到鏈接錯誤:
#include "FSM.H"
std::auto_ptr<FiniteStateMachine > fsm;
error LNK2019: unresolved external symbol "public: __thiscall IFSM::FiniteStateMachine::~FiniteStateMachine(void)" ([email protected]@@[email protected]) referenced in function "public: void * __thiscall FSM::FiniteStateMachine::`scalar deleting destructor'(unsigned int)" ([email protected]@@[email protected])
但通過聲明,如該
#include FSM.h
FiniteStateMachine* fsm;
每一件事情是確定的和完全的項目編制。
現在我想知道爲什麼會發生這種情況?這裏有什麼問題。
類名稱爲'FiniteStateMachine',ctor/dtor名稱與'IFiniteStateMachine'不匹配。這不應該編譯。如果可以,也可以使用'unique_ptr',而不是'auto_ptr'。 –
對不起,它輸入錯誤 –
「關於鏈接該庫的每件事都已完成」=>顯然不是,因爲你得到一個*鏈接器*錯誤。你在構建中包含了「FiniteStateMachine.obj」嗎? – Jon