C++ – LNK2019 error c++ unresolved external symbol

c

Ive got these error messages:

Error 1 error LNK2019: unresolved
external symbol "public: void
__thiscall ArrayIntStorage::sortOwn(void)"
(?sortOwn@ArrayIntStorage@@QAEXXZ)
referenced in function
_main G:\08227\ACW\MAIN\08227_ACW2_Test_Harnesses_2010-11\C_Style_Array\main.obj C_Style_Array

Error 2 error LNK2019: unresolved
external symbol "public: void
__thiscall ArrayIntStorage::sortStd(void)"
(?sortStd@ArrayIntStorage@@QAEXXZ)
referenced in function
_main G:\08227\ACW\MAIN\08227_ACW2_Test_Harnesses_2010-11\C_Style_Array\main.obj C_Style_Array

Error 3 error LNK2019: unresolved
external symbol "class
std::basic_ostream > & __cdecl
operator<<(class
std::basic_ostream > &,class
ArrayIntStorage const &)"
(??6@YAAAV?$basic_ostream@DU?$char_traits@D@std@@@std@@AAV01@ABVArrayIntStorage@@@Z)
referenced in function
_main G:\08227\ACW\MAIN\08227_ACW2_Test_Harnesses_2010-11\C_Style_Array\main.obj C_Style_Array

Error 4 error LNK2019: unresolved
external symbol "class
std::basic_istream > & __cdecl
operator>>(class
std::basic_istream > &,class
ArrayIntStorage &)"
(??5@YAAAV?$basic_istream@DU?$char_traits@D@std@@@std@@AAV01@AAVArrayIntStorage@@@Z)
referenced in function
_main G:\08227\ACW\MAIN\08227_ACW2_Test_Harnesses_2010-11\C_Style_Array\main.obj C_Style_Array

Error 5 error LNK2019: unresolved
external symbol "public: bool
__thiscall ArrayIntStorage::setReadSort(bool)"
(?setReadSort@ArrayIntStorage@@QAE_N_N@Z)
referenced in function
_main G:\08227\ACW\MAIN\08227_ACW2_Test_Harnesses_2010-11\C_Style_Array\main.obj C_Style_Array

Error 6 error LNK1120: 5 unresolved
externals G:\08227\ACW\MAIN\08227_ACW2_Test_Harnesses_2010-11\C_Style_Array\Debug\C_Style_Array.exe 1 1 C_Style_Array

and I dont know whats going on, I wonder if ive missed something?
I am new to this and Its not giving me any line numbers so Im not sure which code to give you so Ill give you this part

#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();

Best Answer

Your linker (part of the compiler) cannot find where ArrayIntStorage::sortOwn() is defined.

This usually occurs either:

  1. The definition of ArrayIntStorage::sortOwn() is in another .c file which you forgot to tell the compiler about (and so wasn't compiled),
  2. ArrayIntStorage is a header only library (so there is no other .c file), in which case you probably have forgotten to implement the function sortOwn(), and have only declaired it.
  3. ArrayIntStorage is an external library which has not been linked. (as Tomalak Geretkal Notes, and is solved by following the steps set out by paxdiablo)

If its neither of these, or you find these options confusing, please post the header file ArrayIntStorage.h and the corresponding .c file (should there be one).

Related Topic