C ++ LNK1120 및 LNK2019 오류 :“해결되지 않은 외부 기호 Winmain@16”
-
12-09-2019 - |
문제
Deitel의 책에서 다른 운동을하려고합니다. 이 프로그램은 월간이자를 계산하고 각 보호자의 새로운 균형을 인쇄합니다. 연습이 동적 메모리와 관련된 장의 일부이므로 "새"및 "삭제"연산자를 사용하고 있습니다. 어떤 이유로 든이 두 가지 오류가 발생합니다.
LNK2019 : 해결되지 않은 외부 기호 winmain@16 함수에서 참조 ___TMAINCRTSTARTUP
치명적인 오류 LNK1120 : 1 미해화 된 외부
다음은 클래스 헤더 파일입니다.
//SavingsAccount.h
//Header file for class SavingsAccount
class SavingsAccount
{
public:
static double annualInterestRate;
SavingsAccount(double amount=0);//default constructor intialize
//to 0 if no argument
double getBalance() const;//returns pointer to current balance
double calculateMonthlyInterest();
static void modifyInterestRate(double interestRate):
~SavingsAccount();//destructor
private:
double *savingsBalance;
};
멤버 기능 정의가있는 CPP 파일
//SavingsAccount class defintion
#include "SavingsAccount.h"
double SavingsAccount::annualInterestRate=0;//define and intialize static data
//member at file scope
SavingsAccount::SavingsAccount(double amount)
:savingsBalance(new double(amount))//intialize savingsBalance to point to new object
{//empty body
}//end of constructor
double SavingsAccount::getBalance()const
{
return *savingsBalance;
}
double SavingsAccount::calculateMonthlyInterest()
{
double monthlyInterest=((*savingsBalance)*annualInterestRate)/12;
*savingsBalance=*savingsBalance+monthlyInterest;
return monthlyInterest;
}
void SavingsAccount::modifyInterestRate(double interestRate)
{
annualInterestRate=interestRate;
}
SavingsAccount::~SavingsAccount()
{
delete savingsBalance;
}//end of destructor
종료 마침내 드라이버 프로그램 :
#include <iostream>
#include "SavingsAccount.h"
using namespace std;
int main()
{
SavingsAccount saver1(2000.0);
SavingsAccount saver2(3000.0);
SavingsAccount::modifyInterestRate(0.03);//set interest rate to 3%
cout<<"Saver1 monthly interest: "<<saver1.calculateMonthlyInterest()<<endl;
cout<<"Saver2 monthly interest: "<<saver2.calculateMonthlyInterest()<<endl;
cout<<"Saver1 balance: "<<saver2.getBalance()<<endl;
cout<<"Saver1 balance: "<<saver2.getBalance()<<endl;
return 0;
}
나는 성공없이 이것을 알아 내려고 한 시간을 보냈다.
해결책
"링커 설정 -> 시스템"으로 이동하십시오. "Windows"에서 "Console"으로 필드 "서브 시스템"을 변경하십시오.
다른 팁
표준 콘솔 응용 프로그램을 작성하는 것 같습니다 ( int main()
), 그러나 링커가 Windows 진입 점을 찾을 것으로 기대하고 있습니다. WinMain
.
Yout Project의 속성 페이지, 링커 섹션, 시스템/서브 시스템 옵션에는 "Windows (/subsystem : windows)"가 선택 되었습니까? 그렇다면 "콘솔 (/서브 시스템 : 콘솔)"으로 변경하십시오.
새 프로젝트를 만들 때 "Win32 프로젝트"대신 "Win32 Console Application"을 선택하십시오.
제휴하지 않습니다 StackOverflow