C++ LNK2019错误c++;未解析外部符号

C++ LNK2019错误c++;未解析外部符号,c++,C++,我收到了这些错误信息: 错误1错误LNK2019:未解决 外部符号“公共:无效” __此调用数组存储::sortOwn(void)” (?sortOwn@ArrayIntStorage@@QAEXZ) 在函数中引用 _主G:\08227\ACW\main\08227\U ACW2\U测试\U线束\U 2010-11\C\U样式\U数组\main.obj C\U样式\U数组 错误2错误LNK2019:未解决 外部符号“公共:无效” __thiscall ArrayIntStorage::sortS

我收到了这些错误信息:

错误1错误LNK2019:未解决 外部符号“公共:无效” __此调用数组存储::sortOwn(void)” (?sortOwn@ArrayIntStorage@@QAEXZ) 在函数中引用 _主G:\08227\ACW\main\08227\U ACW2\U测试\U线束\U 2010-11\C\U样式\U数组\main.obj C\U样式\U数组

错误2错误LNK2019:未解决 外部符号“公共:无效” __thiscall ArrayIntStorage::sortStd(void)” (?sortStd@ArrayIntStorage@@QAEXZ) 在函数中引用 _主G:\08227\ACW\main\08227\U ACW2\U测试\U线束\U 2010-11\C\U样式\U数组\main.obj C\U样式\U数组

错误3错误LNK2019:未解决 “外部符号”类 标准::基本的_ostream>和u cdecl 操作员和cdecl 操作员>>(类 std::基本流>&,类 阵列存储&) (??5@YAAAV?$basic_istream@DU?$char_traits@D@std@@@std@@AAV01@AAVArrayIntStorage@@@Z) 在函数中引用 _主G:\08227\ACW\main\08227\U ACW2\U测试\U线束\U 2010-11\C\U样式\U数组\main.obj C\U样式\U数组

错误5错误LNK2019:未解决 外部符号“公共:布尔” __此调用ArrayIntStorage::setReadSort(bool)” (?setReadSort@ArrayIntStorage@@QAE_N_N@Z) 在函数中引用 _主G:\08227\ACW\main\08227\U ACW2\U测试\U线束\U 2010-11\C\U样式\U数组\main.obj C\U样式\U数组

错误6错误LNK1120:5未解决 外部G:\08227\ACW\MAIN\08227\U ACW2\U测试\U线束\U 2010-11\C\U样式\U数组\Debug\C\U样式\U数组.exe 1 1 C\U样式\U数组

我不知道发生了什么,我想知道我是否错过了什么? 我是新来的,它没有给我任何行号,所以我不知道该给你什么代码,所以我给你这个部分

#include <fstream>
#include <iostream>
using namespace std;
#include "ArrayIntStorage.h"

int main(int argc, char **argv) {

ifstream fin1("ACW2_data.txt");
ofstream out1("1-arrayUnsortedRead.txt");
ofstream out2("2-arrayUnsortedRead-thenSTDSort.txt");

if(!fin1.is_open()) 
{
    cout << "FAIL" << endl;
    return 1;
}

ArrayIntStorage arrayStorage1;
arrayStorage1.setReadSort(false);   // do not read sort

// read in int values into data structure
fin1 >> arrayStorage1;

// output int values in data structure to file
out1 << arrayStorage1;

// sort data structure using std
arrayStorage1.sortStd();

// output int values in data structure to file
out2 << arrayStorage1;

fin1.close();
out1.close();
out2.close();
#包括
#包括
使用名称空间std;
#包括“ArrayIntStorage.h”
int main(int argc,字符**argv){
ifstream fin1(“ACW2_data.txt”);
流输出1(“1-arrayunsorterdard.txt”);
流输出2(“2-arrayunsorterdard-thenSTDSort.txt”);
如果(!fin1.is_open())
{
cout数组存储1;
//将数据结构中的int值输出到文件

out1似乎ArrayIntStorage已编译到库中。请检查项目的链接器详细信息,然后添加库。

您忘记链接定义ArrayIntStorage函数的库。请阅读该库的文档,了解如何在项目中使用它。

您的链接器(编译器的一部分)找不到定义了
ArrayIntStorage::sortOwn()
的位置

这通常发生在以下情况之一:

  • ArrayIntStorage::sortOwn()
    的定义在另一个.c文件中,您忘了告诉编译器(因此没有编译)
  • ArrayIntStorage是一个只包含头的库(因此没有其他.c文件),在这种情况下,您可能忘记了实现函数
    sortOwn()
    ,而只对其进行了说明
  • ArrayIntStorage是一个尚未链接的外部库。(正如Tomalak Geretkal所指出的,通过遵循paxdiablo所述的步骤来解决)

  • 如果两者都不是,或者您发现这些选项令人困惑,请发布头文件
    ArrayIntStorage.h
    和相应的.c文件(如果有)。

    这是一个链接器错误,一旦您了解该过程,就可以轻松解决

    通过
    #在源代码中包含头文件,让编译器知道它需要的定义

    但是,还需要一个额外的步骤,您必须将所有不同的对象文件和库链接在一起

    这是因为,虽然标题包含有关
    ArrayIntStorage
    内容的信息,但它的实际代码在别处。这是在链接阶段购买的

    基本上,您需要确保对象文件或库包含在构建过程中

    例如,以下
    gcc
    命令将包括abc.o对象模块,并从
    libxyz.a
    存档库中引入所需的任何内容:

    gcc -o myprog myprog.c abc.o -L/path/to/libs -lxyz
    
    对于不同的环境,它的实现方式也可能有所不同。例如,IDE很可能在某种项目设置下使用它

    提供了许多环境中常见的编译和链接过程的更多信息