错误LNK2001:尽管包含头文件,但未解析的外部符号

时间:2013-07-25 10:46:59

标签: c++ visual-studio-2012 unresolved-external

我有一个问题似乎无法解决。 我有一个文件JobDispatcher.cpp,其中包含一个文件#include "CalculateNormalsJob.h" 包含具有相同名称的类的声明。

class CalculateNormalsJob : public Job
{

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

文件CalculateNormalsJob.cpp包含以下定义

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

CalculateNormalsJob.h和CalculateNormalsJob.cpp都与JobDispatcher.cpp在同一个项目和文件夹中,它创建一个Job对象

add(new CalculateNormalsJob(some params));

在链接期间,我收到以下错误

Error   9   error LNK2001: unresolved external symbol "public: __thiscall CalculateNormalsJob::CalculateNormalsJob(class ResourceMap *,class JobScheduler *,class Job *,int)" (??0CalculateNormalsJob@@QAE@PAVResourceMap@@PAVJobScheduler@@PAVJob@@H@Z)    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));

1 个答案:

答案 0 :(得分:0)

我检查了文件CalculateNormalsJob.cpp(右键单击>属性)的属性,结果发现它是作为头文件创建的,后来又重命名为.cpp,因此它的“Item Type”设置被设置为头文件。当我将设置更改为C / C ++编译器时,它会按原样进行编译,链接器可以找到外部符号。