错误LNK2019:未解析的外部符号…在函数中引用
error LNK2019: unresolved external symbol... referenced in function
我正在研究序列化(我以前从未做过这对我来说是第一次)我所做的是创建一个名为serialisable的基类所有其他可以序列化的类都可以从:
#include <iostream>
class Serializable{
public:
Serializable();
virtual ~Serializable();
virtual void serialize();
virtual void deserialize();
};
然后我有一个继承自它的类,它是我的AbstractChunk类:
#pragma once
#include <iostream>
#include <list>
#include <fstream>
#include "AbstractBlock.h"
#include "Serialisable.h"
using namespace std;
#ifndef ABSTRACTCHUNK_H
#define ABSTRACTCHUNK_H
class AbstractChunk: public Serializable{
public:
AbstractChunk();
AbstractChunk(int x, int y);
~AbstractChunk();
virtual int getXpos();
virtual int getYpos();
virtual bool unload();
void serialize();
void deserialize();
private:
list<AbstractBlock> blocks;
int xpos;
int ypos;
};
#endif
然后是AbstractChunk的.cpp(我编辑掉了所有不重要的内容):
#include "AbstractChunk.h"
void AbstractChunk::serialize(){
ofstream chunkFile;
chunkFile.open("ChunkData/" + to_string(xpos) + "." + to_string(ypos) + ".chunk");
if (!chunkFile.good())
cout << "Problem Opening Chunk File" << xpos << "." << ypos << endl;
chunkFile << "xpos:" << xpos << "n";
chunkFile << "ypos:" << ypos << "n";
chunkFile.close();
}
void AbstractChunk::deserialize(){
}
那么这个错误是从哪里来的呢?这是一个链接器错误,但是我根本没有弄乱依赖关系或项目设置,我有一种感觉,我像往常一样做了一些愚蠢的事情。
编辑以下是实际的错误
Error 1 error LNK2019: unresolved external symbol "public: __thiscall Serializable::Serializable(void)" (??0Serializable@@QAE@XZ) referenced in function "public: __thiscall AbstractChunk::AbstractChunk(int,int)" (??0AbstractChunk@@QAE@HH@Z) C:UsersMagnusDocumentsVisual Studio 2013ProjectsTop Down ShooterTop Down ShooterAbstractChunk.obj Top Down Shooter
Error 2 error LNK2019: unresolved external symbol "public: virtual __thiscall Serializable::~Serializable(void)" (??1Serializable@@UAE@XZ) referenced in function __unwindfunclet$??0AbstractChunk@@QAE@HH@Z$0 C:UsersMagnusDocumentsVisual Studio 2013ProjectsTop Down ShooterTop Down ShooterAbstractChunk.obj Top Down Shooter
您没有指定确切的链接错误,但肯定您错过了一些方法,您已经声明:
class Serializable {
..
virtual void serialize();
virtual void deserialize();
}
作为非纯虚方法,并且您没有实现它们。你应该把它们变成纯的,因为Serializable
不实现功能,但它只是一个接口:
class Serializable {
..
virtual void serialize() = 0;
virtual void deserialize() = 0;
}
相关文章:
- 用符号版本替换对函数的所有调用
- C++模板函数,用于比较任何无符号整数和有符号整数
- 为什么 gcc 和 clang 为函数模板的实例化生成不同的符号名称?
- 为函数定义符号不明确的指针参数
- 在函数中返回无符号字符数组,但不返回指针
- 如何返回实际值(在我的例子中是无符号字符数组)而不是来自 C++ 函数的指针?
- MacOS 上的 Xcode 11 项目不在一个函数中使用 sin 和 cos:未定义的符号"___sincosf_stret"
- 仅在 MacOS 上析构函数的未定义符号
- clang:使用 O3 导出隐式实例化函数的符号
- 函数 _main (OPENGL C++) 中引用的未解析的外部符号 ________
- 在函数内初始化无符号字符指针将返回空指针
- 如何识别符号表中的符号是我'application'函数
- 引入参数化构造函数后显示 LNK 2019 未解析外部符号的代码错误
- 函数指针给我"重新声明为不同类型的符号"错误
- 类模板上一个特定函数的未解析外部符号
- 如何设计符号表来支持函数重载
- G++ 切换为不包含自己的符号函数名称(和调试数据)-
- 无符号函数,用于返回使用任何数字的数字
- 2 个未解析的外部符号(C++函数基础知识)
- C++错误LNK2001:未解析的外部符号函数_main