Solved

Passing a data structure by reference causes lnk2019 error

Posted on 2008-10-05
3
319 Views
Last Modified: 2013-12-14
I'm pasting the code below, and the function in question at the top again.  
The function immediately below causes the error.  If I pass by value, it doesn't throw the error at me.  I've also posted the error below.

Thanks!

void fnCalculate(userInput& tempVar1){
}

Error      1      error LNK2019: unresolved external symbol "void __cdecl fnCalculate(struct userInput)" (?fnCalculate@@YAXUuserInput@@@Z) referenced in function "void __cdecl fnGetUserInput(void)" (?fnGetUserInput@@YAXXZ)      main.obj      

#include <iostream>
using namespace std;
struct userInput{
	int units;
	int session;
	int residency;
	char parking;
	char sticker;
	char IDCard;
};
char fnTryAgain(char);
void fnGetUserInput();
void fnCalculate(userInput);
int main()
{
	int varAnswer=1;	
	cout << "Programing running..." <<endl;
	cout << "SMC Fee Calculator."<<endl;		
	while (varAnswer == 1)
	{
	fnGetUserInput();
	varAnswer = fnTryAgain(' ');
	}
	return 0;
}
void fnGetUserInput()
{
	userInput strInput;
	cout << "Enter the number of units enrolled: ";
	cin >> strInput.units;
	cout << "Is this Fall[0], Winter[1], Spring[2] or Summer[3]: ";
	cin >> strInput.session;
	cout << "Are you a state resident[0], non-resident[1] or F1 Visa holder[2]: ";
	cin >> strInput.residency;
	cout << "Do you want a parking decal [y/n]: ";
	cin >> strInput.parking;
	cout << "Do you want an AS sticker [y/n]: ";
	cin >> strInput.sticker;
	cout << "Do you want an ID card [y/n]: ";
	cin >> strInput.IDCard;
	fnCalculate(strInput);
}
 
void fnCalculate(userInput& tempVar1){
 
}
char fnTryAgain(char varReply2)
{
	char varReply1=' ', varReply=' ';
	cout << endl << endl << "Try another scenario?  Enter n for no, any other key for yes: ";
	cin >> varReply1;
	if (varReply1 == 'n'){
		varReply = 0;
	}
	else if (varReply1 == 'N'){
		varReply = 0;
	}
	else
		varReply = 1;
	return varReply;
}

Open in new window

0
Comment
Question by:mike_hale
  • 2
3 Comments
 
LVL 55

Accepted Solution

by:
Jaime Olivares earned 500 total points
ID: 22644382
both the declaration of the function and the implementation must match the same type of arguments.
So, your declaration at line 13:

     void fnCalculate(userInput);

should be:

     void fnCalculate(&userInput);

to match the implementation at line 44
0
 
LVL 3

Author Comment

by:mike_hale
ID: 22645622
*slaps forehead*

Duh!  That worked.  Thank you Jaime!  
0
 
LVL 3

Author Closing Comment

by:mike_hale
ID: 31503150
Thank you!  
0

Featured Post

Free Tool: ZipGrep

ZipGrep is a utility that can list and search zip (.war, .ear, .jar, etc) archives for text patterns, without the need to extract the archive's contents.

One of a set of tools we're offering as a way to say thank you for being a part of the community.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

Title # Comments Views Activity
.Net Errors Service Crashing 5 130
What is the best editor for PowerShell scripts? 7 97
Visual Studio 2010 There is no editor available for ... 8 91
eclipse formatting 6 106
Here is a helpful source code for C++ Builder programmers that allows you to manage and manipulate HTML content from C++ code, while also handling HTML events like onclick, onmouseover, ... Some objects defined and used in this source include: …
How to install Selenium IDE and loops for quick automated testing. Get Selenium IDE from http://seleniumhq.org Go to that link and select download selenium in the right hand columnThat will then direct you to their download page.From that page s…
The viewer will learn how to use and create keystrokes in Netbeans IDE 8.0 for Windows.
The viewer will learn how to synchronize PHP projects with a remote server in NetBeans IDE 8.0 for Windows.

839 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question