LIBCD.lib(wincrt0.obj) : error LNK2001: unresolved external symbol _WinMain@16
Debug/Lab7.exe : fatal error LNK1120: 1 unresolved externals
Printable View
LIBCD.lib(wincrt0.obj) : error LNK2001: unresolved external symbol _WinMain@16
Debug/Lab7.exe : fatal error LNK1120: 1 unresolved externals
It looks like you didn't choose the right settings for your C++ program. Instead, you chose settings for a windows program, which is very different than a C++ program.
My suggestion is to cut and paste your code into Notepad or something similar, then start a new project with a new name, and then paste your code into the new project. If you've never set up a project before, then say so, and I or someone else can post the details on what to do.
This was my first attempt at setting up a project and workspace. I made it a Win32 Application, because that is what my instructor said to make it. Everything compiles fine, but I get the error when linking.
Code:#include <iostream.h>
#include "Transaction.h"
#include "BankStatement.h"
void main()
{
BankStatement MyStatement;
MyStatement.SetBegBal(15.92f);
Transaction T1;
T1.SetAmount(123.56f);
T1.SetCode('D');
T1.SetNote("CTPay");
Transaction T2(153.86f,'W',"Rent");
Transaction T3;
T3.SetAmount(75.56f);
T3.SetCode('D');
T3.SetNote("Tips");
Transaction T4(12.56f,'D',"Gift");
Transaction T5;
T5.SetAmount(73.74f);
T5.SetCode('W');
T5.SetNote("Date");
Transaction T6(145.75f,'D',"Loan");
Transaction T7;
T7.SetAmount(40.00f);
T7.SetCode('W');
T7.SetNote("LoanPymt");
Transaction T8(21.74f,'W',"Groceries");
MyStatement.EnterTransaction(T1);
MyStatement.EnterTransaction(T2);
MyStatement.EnterTransaction(T3);
MyStatement.EnterTransaction(T4);
MyStatement.EnterTransaction(T5);
MyStatement.EnterTransaction(T6);
MyStatement.EnterTransaction(T7);
MyStatement.EnterTransaction(T8);
MyStatement.DisplayResults();
MyStatement.ArrangeTransactions();
MyStatement.PrintArranged();
}
Code:#include "Transaction.h"
#include <string.h>
Transaction::Transaction(float InAmount, char InCode, char InNote[])
{
SetAmount(InAmount);
SetCode(InCode);
SetNote(InNote);
}
void Transaction::SetAmount(float NewAmount)
{
Amount = NewAmount;
}
void Transaction::SetCode(char NewCode)
{
Code = NewCode;
}
void Transaction::SetNote(char *NewNote)
{
strcpy(Note,NewNote);
}
Code:#ifndef tran_h
#define tran_h
#include <iostream.h>
class Transaction
{
public:
Transaction(){Amount = 0.0f; Code = 'N'; Note[0] = '\0';}
Transaction(float InAmount, char InCode, char InNote[]);
void SetAmount(float NewAmount);
float GetAmount(){return Amount;}
void SetCode(char NewCode);
char GetCode(){return Code;}
void SetNote(char *NewNote);
void PrintNote(){cout<<Note<<endl;}
private:
float Amount;
char Code;
char Note[20];
};
#endif
Code:#include "BankStatement.h"
#include "Transaction.h"
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
void BankStatement::SetBegBal(float Balance)
{
BegBal = Balance;
}
void BankStatement::EnterTransaction(Transaction Input)
{
static int num_tran;
TransactionLog[num_tran] = Input;
}
void BankStatement::DisplayResults()
{
int NumWith = 0;
int NumDep = 0;
for ( int tran_num = 0; tran_num < 8; tran_num++)
{
if (tran_num = 0)
cout<<"The beginning balance was: "<<BegBal;
else
{
cout<<endl<<"Transaction: "<<tran_num<<" was a "<<" amount "<<" for "<<endl;
cout<<" Running Bal: "<<RunningBal[tran_num + 1];
if (RunningBal[tran_num + 1] < 0)
cout<<endl<<"OVERDRAWN";
}
}
NumWith = NumEntries - NumDep;
cout<<"The ending balance is: "<<EndBal<<endl;
cout<<"The number of transactions is: "<<NumEntries<<endl;
cout<<"The number of Deposits is: "<<NumDep<<endl;
cout<<"The number of Withdrawls is: "<<NumWith<<endl;
}
void BankStatement::ArrangeTransactions()
{
for ( int x = 0; x < 8; x++)
{
for ( int x = 0; x < 8; x++)
{
}
}
}
void BankStatement::PrintArranged()
{
for ( int x = 0; x < 8; x++)
{
}
}
Code:#ifndef bankState_h
#define bankState_h
#include "Transaction.h"
class BankStatement
{
public:
BankStatement() {NumEntries = 0; BegBal = 0.0; EndBal = 0;}
void SetBegBal(float Balance);
float GetBegBal() {return BegBal;}
float GetEndBal() {return EndBal;}
int GetNumEntries() {return NumEntries;}
void EnterTransaction(Transaction Input);
void DisplayResults();
void ArrangeTransactions();
void PrintArranged();
;
private:
Transaction TransactionLog[10];
Transaction Arranged[10];
int NumEntries;
float RunningBal[10];
float BegBal;
float EndBal;
};
#endif
Make it a Consolse application, not Win32 application.
>void main()
Don't use void main. main returns an int:
int main(void)
See the Programming FAQ at the bottom of the page for why.
You sure he/she didn't say to make it a Win23 Console Application? There's a difference.Quote:
I made it a Win32 Application, because that is what my instructor said to make it.
Details for setting up a project using VC++ 6:
The first thing you need to do before you start writing your program is to start a new project. You should close all workspaces before doing that--if any are open--by clicking on File/Close Workspace. Then click on File/New. The projects tab should already be selected and you should make sure the radio button for "Create new workspace" is checked. For a console program(needed for beginning C++ programs), select Win32 Console Application, fill in a project name, then click OK. Then select Empty Project and click Finish. Then click on OK.
Now you need to create a file for your project. Click on File/New and the Files tab should be selected. Click on C++ Source File. Make sure the "Add to project" check box is checked. Fill in the File Name(with no extension--it will be added for you) and click on OK. At the top left of the Visual C++ window, in the blue border, it will show the project name and then Microsoft Visual C++. The file you created has its name in the blue border at the top of its window.
Then you type in your code, and when you are done you need to compile it. You can compile your program by clicking on the toolbar button that looks like a box with dots in it and two down arrows with dots above the arrows, or by choosing the build menu item and selecting "Compile your_project.cpp". (If the toolbar button I described isn't visible, you can right click anywhere in the toolbar area and select Build MiniBar to diplay the applicable toolbar buttons.)
After you compile your program, any errors will be displayed in a separate frame. You can read an error and then click on the error message to take you to the line where the error occured in your code. Once you take care of all the errors, then you can execute your program by clicking on the tool bar button that looks like a red exclamation mark, or by clicking on the Build menu and selecting "Execute your_project.exe". After that, a DOS window will open and the results of your program will be output to the DOS window.
The project hierarchy goes like this: workspace/project/files. A project is simply a program of some kind made up of various files(for a beginner it will be only one file), and a project workspace is a folder in which all the information relating to a project is stored. When you create a project, a project workspace(a folder) is created automatically, and Visual C++ will maintain all the source code and other files in the project workspace folder. When you want to stop working on a program, you click on File/Close Workspace, and when you want to start working on a previous project, you click on File/Open Workspace or File/Recent Workspaces.
The only way you can permanently delete files and/or workspaces is to navigate to the folder on your computer and delete one of the files in the folder or the whole folder. Deleting a file in Visual C++ does not remove it from the workspace.
Probably not, Win23 didn't really get off the ground in most parts ;)Quote:
Originally posted by 7stud
You sure he/she didn't say to make it a Win23 Console Application? There's a difference.