2013-07-25 40 views
0

我有一個問題,我似乎無法解決。 我有一個文件JobDispatcher.cpp,其中包含文件#include "CalculateNormalsJob.h" 包含具有相同名稱的類的聲明。錯誤LNK2001:無法解析的外部符號,儘管包含頭文件

class CalculateNormalsJob : public Job 
{ 

public: 
    CalculateNormalsJob(some params); 
... 
}; 

文件CalculateNormalsJob.cpp包含以下定義

CalculateNormalsJob::CalculateNormalsJob(some params) 
    : Job(params) 
{ 
} 

兩個CalculateNormalsJob.h和CalculateNormalsJob.cpp是在同一個項目和文件夾JobDispatcher.cpp它創建了一個工作對象

add(new CalculateNormalsJob(some params)); 

鏈接期間,我收到以下錯誤

Error 9 error LNK2001: unresolved external symbol "public: __thiscall CalculateNormalsJob::CalculateNormalsJob(class ResourceMap *,class JobScheduler *,class Job *,int)" ([email protected]@[email protected]@@[email protected]@[email protected]@[email protected]) C:\Fredrik\vs12\proflexa\scanner\JobDispatcherJob.obj 

我對我忘記的東西毫無頭緒。我在Win7下使用Visual studio 2012和包含的v110編譯器。

任何幫助表示讚賞!

編輯:

出於某種原因,它似乎像CalculateNormalsJob.cpp未編譯。然而,我不知道爲什麼。它包含在項目中,Visual Studio的IntelliSense具有類的知識和它的功能。

編輯2:

CalculateNormalsJob.h 
CalculateNormalsJob(ResourceMap *state, JobScheduler *scheduler, Job* listener, int scanNumber); 


CalculateNormalsJob.cpp 
CalculateNormalsJob::CalculateNormalsJob(ResourceMap *state, JobScheduler *scheduler, Job* listener, int scanNumber) 
    : Job(state, scheduler, listener), scanNumber(scanNumber) 
{ 
} 


Call: 
add(new CalculateNormalsJob(state,scheduler,this,scanNbr)); 
+0

你實際上是否與CaclulateNormalJobs.cpp連接? –

+0

您確定您已經將屬於CalculateNormalsJob.h'的CalculateNormalsJob.cpp文件添加到項目中,以便它實際得到編譯嗎? – sth

+0

「CalculateNormalsJob.cpp」文件包含在項目中,應該編譯 –

回答

0

我檢查文件CalculateNormalsJob.cpp的屬性(右單擊 - >性),事實證明,它被作爲一個標題文件創建和後重新命名爲.CPP,因此它的「Item Type」設置被設置爲頭文件。當我將設置更改爲C/C++編譯器時,它將按照它的編譯方式進行編譯,鏈接器可以找到外部符號。

相關問題