C LNK2019错误,未解决的外部字符
c++ LNK2019 error, unresolved external character
我知道这个错误是什么,这是什么意思,但是对于我的生命,我找不到问题。(我正在制作允许制作模块化设备的游戏,这就是发生故障的地方。)
据我所知,我拥有:
- 我包括了我需要的所有#includes。
- 我检查了我的功能,以确保它们具有定义
- 我确保一切都与班级交流的方式平方
这是一些代码(我现在有21个项目类型,所以我只使用几件):
//这只是此功能的一部分,但一直是同一件事。这是崩溃似乎正在发生的地方。
void Inventory::chooseItem(int tag)
{
switch (tag)
{
//armor
case '1':
addArmorBack(makeNewArmor1(holder.back()));
break;
case '2':
addArmorBreastplate(makeNewArmor2(holder.back()));
break;
case '3':
addArmorStraps(makeNewArmor3(holder.back()));
break;
//.h的私人区域中的相关数据持有人:
vector<ItemPart> holder;
ArmorBack makeNewArmor1(ItemPart held);
ArmorBreastplate makeNewArmor2(ItemPart held);
ArmorStraps makeNewArmor3(ItemPart held);
//项目部分列表
vector<ArmorBack> armorBackList;
vector<ArmorBreastplate> armorBreastplateList;
vector<ArmorStraps> armorStrapsList;
//这是我用来将内容添加到我的列表中的功能的示例。每个项目都是相同的功能。
void Inventory::addArmorBack(ArmorBack makeNew)
{
string name;
armorBackList.push_back(makeNew);
name = makeNew.getName();
addItem(name);
}
//使用标签int:
class ItemPart
{
public:
ItemPart(int attack, int defense, int health, int experienceMult, int tag, string name);
//setters
void setName();
//getters
int getDefense();
int getAttack();
int getHealth();
int getExperienceMult();
int getTag();
string getName();
private:
string _name;
int _defense;
int _attack;
int _health;
int _experienceMult;
int _tag;
};
//最后,相关项目类收集数据:
ArmorBack::ArmorBack(ItemPart crafted)
{
_attack = crafted.getAttack();
_defense = crafted.getDefense();
_health = crafted.getHealth();
_experienceMult = crafted.getExperienceMult();
_tag = crafted.getTag();
_name = crafted.getName();
}
编辑:这是错误文本。我为我实施的每个项目类型都有其中之一:
错误37错误lnk2019:未解决的外部符号"私人:class Armorback __________________:makenewarmor1(class itempart)"(?makenewarmor1@inventory @@ aake @@ aae?avarmorback @@ vitempart@@@@@vitempart @@ z)void __ thiscall intingrory :: selectItem(int)"(?selectItem@inventory @@ qaexh@z)c: users users forresto document disture Studio Visual Studio 2012 Projects projection game Challenge ascii game Challenge ascii game clage accembal asci.obj aventy.obj Game Game Game挑战ASCIIII III挑战
仅仅是因为您定义了
ArmorBack makeNewArmor1(ItemPart held);
类成员函数在标题中,并不意味着此成员函数将脱离空气。它仅被声明,必须在某些翻译单元(.cpp
文件)中定义。makeNewArmor1()
是从chooseItem()
调用的,因此您必须在某个地方定义此成员函数。
您没有发布任何内容,表明此成员函数在任何地方都定义。如果在某些翻译单元中定义它,则无法正确链接。您显示的链接错误:
Error 37 error LNK2019: unresolved external symbol "private: class
ArmorBack __thiscall Inventory::makeNewArmor1(class ItemPart)"
(?makeNewArmor1@Inventory@@AAE?AVArmorBack@@VItemPart@@@Z) referenced
in function "public: void __thiscall Inventory::chooseItem(int)"
几乎是自称的。的确,C++
因混淆,难以理解的汇编错误而臭名昭著。但这不是其中之一。它几乎告诉您牛肉是什么:未定义的符号。它还告诉您未定义哪个符号以及从何处引用的符号。就是这样。在这里不需要的其他需要知道的其他。
删除对makeNewArmor1()
的调用,或在您的一个翻译单元中定义此方法,或者弄清楚定义此成员函数的翻译单元是否未被编译和/或链接,正确地。
同上您显示的其他链接错误。
- C++字符*缓冲区的大小
- HEX值到wchar_t字符(UTF-8)的转换
- 为什么 Serial.println(<char[]>);返回随机字符?
- 我的字符计数代码计算错误.为什么
- 字符串-C++后显示的随机字符
- 将Integer转换为4字节的unsined字符矢量(按大端字节顺序)
- 如何在C++中从字符串中分割字符
- 为什么msgrcv()将垃圾字符馈送到缓冲区
- 指向指向字符数组的指针数组的指针
- 如何用转义符替换字符串中的所有特殊字符
- 为什么 sscanf 无法从一个字符串中读取uint64_t和字符?
- 比较字符数组
- 将字符指针十六进制转换为字符串并保存在文本文件C++中
- 从矢量<无符号字符>转换为字符* 包括垃圾数据
- 如何使用Crypto++并为RSA返回可打印的字节/字符数组
- 在函数内部的声明中初始化数组,并在外部使用它
- 如何在C++中确定文本文件中的元素是字符还是数字
- c ++控制台应用程序,如何在控制台外部打印字符
- C LNK2019错误,未解决的外部字符
- 减少从外部数据文件中检索字符数组的重复