What is Error 1 error LNK2019: unresolved external symbol ????

T

Trent

Here is the error while using Visual Studio 2005

Error 1 error LNK2019: unresolved external symbol "void __cdecl
print(int,int,int,int,int,int,int,int)" (?print@@YAXHHHHHHHH@Z) referenced
in function _main assign2.obj

Thanks a lot !


Here is the code:

#include <iostream>
#include <fstream>
#include<iomanip>

using namespace std;

void bubbleSort(int *array, const int, int &); //function prototypes

void selectionSort(int *, const int, int &);

void insertionSort(int *, const int, int &);

void swap(int *, int *);

void print(int array, int size, int bubbleSort, int selectionSort, int
insertionSort, int bcount, int scount, int icount);

// print(&numArray, arraySize, &bsort, &ssort, &isort,
bsortCounter,sSortCounter, iSortCounter);

ifstream inFile;

ofstream outFile;

int main()

{

const int arraySize = 10;

int numArray[arraySize];

int bsort[arraySize];

int bsortCounter =0;

int isort[arraySize];

int iSortCounter =0;

int ssort[arraySize];

int sSortCounter =0;

// each sort needs array and counter



inFile.open("input.txt"); //opening input file

if (!inFile)

{

cerr << "Error Opening File" << endl;

system("pause");

return -1;

}


for (int i =0;i < 5;i++)

{

for (int j=0; j< arraySize;j++)

{

inFile >> numArray[j];

bsort[j]=numArray[j];

isort[j]=numArray[j];

ssort[j]=numArray[j];

}

cout << endl;

bubbleSort(bsort, arraySize, bsortCounter);// call the sort functions

selectionSort(ssort, arraySize,sSortCounter);

insertionSort(isort, arraySize,iSortCounter);


}

print(*numArray, arraySize, *bsort, *ssort, *isort,
bsortCounter,sSortCounter, iSortCounter);

cout << endl;


system("pause");

inFile.close();// close files

outFile.close();

return 0;

}









// Funtions below







void bubbleSort(int *array, const int size, int &count)

{

int i, pass;

for (pass =0; pass < size - 1; pass++) //# of passes

count= count+1;

for (i= 0; i < size - 1; i++) // one pass

if (array > array[i+1]) //one comparison

{

swap(&array, &array[i+1]);


}

}// end of bubble Sort function



void selectionSort(int *array, const int size, int &count)

{

int i, j, tmp;

for (i = 0; i < size - 1; i++)

{

tmp = i;

count = count + 1;

for (j = i+1; j < size; j++)

if (array[j] < array[tmp])

tmp = j;

swap(&array, &array[tmp]); //call swap funtion

}

}

void swap(int *element1, int *element2)

{

int tmp = *element1;

*element1 = *element2;

*element2 = tmp;

}



void insertionSort(int *array,const int size, int &count)

{

int tmp,i;

for(int j=1;j<size;j++)

{

tmp=array[j];

i=j-1;

while(array>tmp && i>=0)

{

count = count +1;

array[i+1]=array;

i--;

}

array[i+1]=tmp;

}

}


void print(int *array, int size, int *bubbleSort, int *selectionSort, int
*insertionSort, int bcount, int scount, int icount)

{

cout << " Unsorted List Bubble Sorted Selection Sorted Insertion Sorted" <<
endl;

for (int k =0;k < size;k++)

cout << setw(15) <<array[k] << setw(16) << bubbleSort[k] << setw(20) <<
selectionSort[k] << setw(19) << insertionSort[k] << endl;

cout << endl << "Number: "<<setw(23) <<bcount << setw(20)<<scount
<<setw(19)<< icount << endl;

}// end of print function
 
K

kmoving

Here is the error while using Visual Studio 2005

Error 1 error LNK2019: unresolved external symbol "void __cdecl
print(int,int,int,int,int,int,int,int)" (?print@@YAXHHHHHHHH@Z) referenced
in function _main assign2.obj

Thanks a lot !

Maybe you should change your print function declaration and print
function call
like this?
void print(int array, int size, int bubbleSort, int selectionSort, int
insertionSort, int bcount, int scount, int icount);

void print(int *array, int size, int *bubbleSort, int *selectionSort,
int
*insertionSort, int bcount, int scount, int icount)

and
print(*numArray, arraySize, *bsort, *ssort, *isort,
bsortCounter,sSortCounter, iSortCounter);

print(numArray, arraySize, sort, ssort, isort,
bsortCounter,sSortCounter, iSortCounter);

misunderstand pointer's use?

BestRegards
Kmoving
 
T

Trent

Maybe you should change your print function declaration and print
function call
like this?


void print(int *array, int size, int *bubbleSort, int *selectionSort,
int
*insertionSort, int bcount, int scount, int icount)

and


print(numArray, arraySize, sort, ssort, isort,
bsortCounter,sSortCounter, iSortCounter);

misunderstand pointer's use?

Doh!

My bad..I see the problem..thanks for the great help.
It compiles now.
 
T

Trent

While it compiles, it no longer is sorting properly.
I had the code for printing out the results in main();

I now put the print out in the function and now the arrays are not being
sorted.
 
T

Trent

And finally,,

Does not compile under g++ or gcc

assign2.cpp:146: error: missing terminating " character
assign2.cpp:147: error: missing terminating " character
assign2.cpp:20: error: expected constructor, destructor, or type conversion
before â,â token
assign2.cpp:20: error: expected constructor, destructor, or type conversion
before â,â token
assign2.cpp:20: error: expected constructor, destructor, or type conversion
before â)â token
assign2.cpp: In function âint main()â:
assign2.cpp:66: error: invalid conversion from âintâ to âint*â
assign2.cpp:66: error: initializing argument 1 of âvoid print(int*, int,
int*, int*, int*, int, int, int)â
assign2.cpp:66: error: invalid conversion from âintâ to âint*â
assign2.cpp:66: error: initializing argument 3 of âvoid print(int*, int,
int*, int*, int*, int, int, int)â
assign2.cpp:66: error: invalid conversion from âintâ to âint*â
assign2.cpp:66: error: initializing argument 4 of âvoid print(int*, int,
int*, int*, int*, int, int, int)â
assign2.cpp:66: error: invalid conversion from âintâ to âint*â
assign2.cpp:66: error: initializing argument 5 of âvoid print(int*, int,
int*, int*, int*, int, int, int)â
assign2.cpp: At global scope:
assign2.cpp:143: error: expected constructor, destructor, or type conversion
before âvoidâ



Seems like maybe I better switch to int xxxx[]
 
J

John Harrison

Trent said:
And finally,,

Does not compile under g++ or gcc

assign2.cpp:146: error: missing terminating " character
assign2.cpp:147: error: missing terminating " character
assign2.cpp:20: error: expected constructor, destructor, or type conversion
before â,â token
assign2.cpp:20: error: expected constructor, destructor, or type conversion
before â,â token
assign2.cpp:20: error: expected constructor, destructor, or type conversion
before â)â token
assign2.cpp: In function âint main()â:
assign2.cpp:66: error: invalid conversion from âintâ to âint*â
assign2.cpp:66: error: initializing argument 1 of âvoid print(int*, int,
int*, int*, int*, int, int, int)â
assign2.cpp:66: error: invalid conversion from âintâ to âint*â
assign2.cpp:66: error: initializing argument 3 of âvoid print(int*, int,
int*, int*, int*, int, int, int)â
assign2.cpp:66: error: invalid conversion from âintâ to âint*â
assign2.cpp:66: error: initializing argument 4 of âvoid print(int*, int,
int*, int*, int*, int, int, int)â
assign2.cpp:66: error: invalid conversion from âintâ to âint*â
assign2.cpp:66: error: initializing argument 5 of âvoid print(int*, int,
int*, int*, int*, int, int, int)â
assign2.cpp: At global scope:
assign2.cpp:143: error: expected constructor, destructor, or type conversion
before âvoidâ

Show us the code. I'm not psychic.
Seems like maybe I better switch to int xxxx[]

In a function there is no difference

int f(int* x)

int f(int x[])

mean EXACTLY the same, x is a pointer to int. Confusing and stupid but true.

john
 
T

Trent

John Harrison said:
Show us the code. I'm not psychic.

But here it is anyway:
I changed it a tad bit to see if the changes would work.


-----------------------------
#include <iostream>
#include <fstream>
#include<iomanip>

using namespace std;


void bubbleSort(int array[], const int, int &); //function prototypes
void selectionSort(int [], const int, int &);
void insertionSort(int [], const int, int &);
void swap(int *, int *);
void print(int array[], int size, int bubbleSort[], int selectionSort[], int
insertionSort[], int bcount, int scount, int icount);
// print(&numArray, arraySize, &bsort, &ssort, &isort,
bsortCounter,sSortCounter, iSortCounter);

ifstream inFile;
ofstream outFile;

int main()
{

const int arraySize = 10;
int numArray[arraySize];
int bsort[arraySize];
int bsortCounter =0;
int isort[arraySize];
int iSortCounter =0;
int ssort[arraySize];
int sSortCounter =0;
// each sort needs array and counter (parallel arrays)


inFile.open("input.txt"); //opening input file
if (!inFile)
{
cerr << "Error Opening File" << endl;
system("pause");
return -1;
}


for (int i =0;i < 5;i++)
{
for (int j=0; j< arraySize;j++)
{
inFile >> numArray[j];
bsort[j]=numArray[j];
isort[j]=numArray[j];
ssort[j]=numArray[j];
}

cout << endl;
bubbleSort(bsort, arraySize, bsortCounter);// call the sort functions
selectionSort(ssort, arraySize,sSortCounter);
insertionSort(isort, arraySize,iSortCounter);

print(numArray, arraySize, bsort, ssort, isort, bsortCounter,sSortCounter,
iSortCounter);\

}

cout << endl;


system("pause");

inFile.close();// close files
outFile.close();
return 0;
}





// Funtions below




void bubbleSort(int array[], const int size, int &count)
{
int i, pass;
for (pass =0; pass < size - 1; pass++) //# of passes
count= count+1;

for (i= 0; i < size - 1; i++) // one pass
if (array > array[i+1]) //one comparison
{
swap(&array, &array[i+1]);

}

}// end of bubble Sort function


void selectionSort(int array[], const int size, int &count)
{
int i, j, tmp;
for (i = 0; i < size - 1; i++)
{
tmp = i;
count = count + 1;
for (j = i+1; j < size; j++)
if (array[j] < array[tmp])
tmp = j;

swap(&array, &array[tmp]); //call swap funtion
}
}


void swap(int *element1, int *element2)
{
int tmp = *element1;
*element1 = *element2;
*element2 = tmp;
}


void insertionSort(int array[],const int size, int &count)
{
int tmp,i;
for(int j=1;j<size;j++)
{
tmp=array[j];
i=j-1;
while(array>tmp && i>=0)
{
count = count +1;
array[i+1]=array;
i--;
}
array[i+1]=tmp;
}
}

void print(int array[], int size, int bubbleSort[], int selectionSort[], int
insertionSort[], int bcount, int scount, int icount)
{
cout << " Unsorted List Bubble Sorted Selection Sorted Insertion
Sorted" << endl;

for (int k =0;k < size;k++)
cout << setw(15) <<array[k] << setw(16) << bubbleSort[k] << setw(20) <<
selectionSort[k] << setw(19) << insertionSort[k] << endl;
cout << endl << "Number: " << setw(23) <<bcount << setw(20)<<scount
<<setw(19)<< icount << endl;

}// end of print function
Seems like maybe I better switch to int xxxx[]

In a function there is no difference

int f(int* x)

int f(int x[])

mean EXACTLY the same, x is a pointer to int. Confusing and stupid but
true.

john
 
J

John Harrison

Trent said:
But here it is anyway:
I changed it a tad bit to see if the changes would work.

Well that's the problem. I'm not prepared to try and diagnose problems
with your code based on some old code and the changes you say you've
made to it. Total waste of time. I'm sure all the regulars would agree
with this.

Anyway the code you've posted compiles fine for me under g++, so I'm not
sure what the issue there is. Mostly likely when you got the compile
errors under g++ with code was different from what you've just posted.

Secondly the bubble sort code is bugged. You have missed a pair of
braces. You have

int i, pass;
for (pass =0; pass < size - 1; pass++) //# of passes
count= count+1;

for (i= 0; i < size - 1; i++) // one pass
if (array > array[i+1]) //one comparison
{
swap(&array, &array[i+1]);

}

it should be

int i, pass;
for (pass =0; pass < size - 1; pass++) //# of passes
{
count= count+1;

for (i= 0; i < size - 1; i++) // one pass
if (array > array[i+1]) //one comparison
{
swap(&array, &array[i+1]);

}
}

Without those braces the only statement in the for loop is the 'count =
count + 1;' statement, so you only ever do one pass.

You should get into the habit of always indenting your code correctly.
This isn't to make it look pretty, it precisely to catch errors like this.

john
 
T

Trent

John Harrison said:
Trent said:
But here it is anyway:
I changed it a tad bit to see if the changes would work.

Well that's the problem. I'm not prepared to try and diagnose problems
with your code based on some old code and the changes you say you've made
to it. Total waste of time. I'm sure all the regulars would agree with
this.

Anyway the code you've posted compiles fine for me under g++, so I'm not
sure what the issue there is. Mostly likely when you got the compile
errors under g++ with code was different from what you've just posted.

Secondly the bubble sort code is bugged. You have missed a pair of braces.
You have

int i, pass;
for (pass =0; pass < size - 1; pass++) //# of passes
count= count+1;

for (i= 0; i < size - 1; i++) // one pass
if (array > array[i+1]) //one comparison
{
swap(&array, &array[i+1]);

}

it should be

int i, pass;
for (pass =0; pass < size - 1; pass++) //# of passes
{
count= count+1;

for (i= 0; i < size - 1; i++) // one pass
if (array > array[i+1]) //one comparison
{
swap(&array, &array[i+1]);

}
}

Without those braces the only statement in the for loop is the 'count =
count + 1;' statement, so you only ever do one pass.

You should get into the habit of always indenting your code correctly.
This isn't to make it look pretty, it precisely to catch errors like this.



okays a lor or the input. I guess I missed those after lack of sleep.

Now on to try to get the swap function to work in the insertion sort.

Trent
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,961
Messages
2,570,130
Members
46,689
Latest member
liammiller

Latest Threads

Top