【问题标题】:error LNK2001: unresolved external symbol despite inclusion of header file错误 LNK2001:尽管包含头文件,但未解析的外部符号
【发布时间】:2013-07-25 05:17:47
【问题描述】:

我有一个似乎无法解决的问题。 我有一个文件 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 与创建 Job 对象的 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)" (??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));

【问题讨论】:

  • 你真的在链接 CaclulateNormalJobs.cpp 吗?
  • 您确定已将属于CalculateNormalsJob.h` 的CalculateNormalsJob.cpp 文件添加到项目中以便实际编译吗?
  • 项目中包含“CalculateNormalsJob.cpp”文件,需要编译
  • 可能是愚蠢的问题,但您没有无意中在CalculateNormalsJob.cpp 的单个文件设置级别勾选了“从构建中排除”的选项?否则建议从项目中删除文件并将其重新添加。(以及退出并重新启动 Visual Studio。)您也可以尝试从头开始重建整个项目。
  • @FredrikBagge 考虑将其发布为您自己问题的答案

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


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-05-03
    • 2014-09-27
    • 2018-08-14
    • 2018-08-24
    • 2020-08-21
    • 2016-09-04
    相关资源
    最近更新 更多