2013-07-25 81 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++编译器时,它将按照它的编译方式进行编译,链接器可以找到外部符号。

相关问题