错误LNK2001:未解析的外部符号,尽管包含头文件
error LNK2001: unresolved external symbol despite inclusion of header file
我有一个问题似乎无法解决。我有一个文件JobDispatcher.cpp,其中包括一个文件#include "CalculateNormalsJob.h"
包含具有相同名称的类的声明。
class CalculateNormalsJob : public Job
{
public:
CalculateNormalsJob(some params);
...
};
CalculateNormalsJob.cpp文件包含以下定义
CalculateNormalsJob::CalculateNormalsJob(some params)
: Job(params)
{
}
CalculateNormalsJob.h和CalculateNrmalsJob.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)" (??0CalculateNormalsJob@@QAE@PAVResourceMap@@PAVJobScheduler@@PAVJob@@H@Z) C:Fredrikvs12proflexascannerJobDispatcherJob.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));
我检查了CalculateNormalsJob.cpp文件的属性(右键单击->properties),结果发现它是作为头文件创建的,后来重命名为.cpp,因此它的"项目类型"设置设置为头文件。当我将设置更改为C/C++编译器时,它会按照应有的方式编译,链接器可以找到外部符号。
相关文章:
- 使用gcc从静态链接的文件中查找可选符号
- 检测 COFF 对象文件中C++内联符号
- 使用 fopen 打开 .pak 文件并使该文件应用于 const 无符号字符* (C++)
- 如何从二进制文件中的给定符号中获取调用程序图
- 如何将 UTF-8 文本从文件转换为某个可以迭代的容器,并检查每个符号是否为C++字母数字?
- CMake 生成的 MSVC 项目找不到符号,即使为其相关 dll 正确生成了 lib 文件也是如此
- 错误:当我从"WinDbg"打开可执行文件时,找不到符号文件。默认导出 ntdll 的符号.dll
- 可以在 cpp 文件中C++定义为特殊符号的变量β
- 尝试将字符串从文件读取到无符号字符向量中
- C++和带有国家符号的文件路径(也许用 UTF8 编码)
- 体系结构x86_64的未定义符号:c++/ h 文件和 cpp 文件
- 错误LNK2019:未解析的外部符号.c文件到cpp
- Visual Studio 2012 性能分析无法加载符号文件
- 查看给定VC++ exe中的所有符号/文件的方法
- gdb:在0x2aaaaaaab000添加的符号文件系统提供的 DSO 中找不到可加载的部分
- gdb:在添加的符号文件系统提供的编号为0x#的DSO中找不到可加载的节
- 类型是否在最终二进制文件中公开?它们在符号文件和RTTI中可用吗?
- Oracle是否为OCCI/OCI提供公共符号文件(PDB)
- gdb:什么是用于调试的符号文件
- 非常困如何找到符号文件