C ++ LNK1120和LNK2019错误:“解析外部符号的WinMain @ 16”(C++ L

2019-09-22 17:10发布

我试图做从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;
}

我花了一个小时的努力没有成功摸不着头脑。

Answer 1:

进入“连接器设置 - >系统”。 从“窗口”到“控制台”改变现场“子系统”。



Answer 2:

它看起来像你正在编写一个标准的控制台应用程序(你有int main()但该接头希望找到一个窗口切入点WinMain

在YOUT项目的属性页中,接头部分,系统/子系统选项,你有没有“的Windows(/子系统:WINDOWS)”选择? 如果是这样,请尝试更改为“控制台(/子系统:控制台)”



Answer 3:

当创建一个新的项目,选择“Win32控制台应用程序”,而不是“Win32项目”。



文章来源: C++ LNK1120 and LNK2019 errors: “unresolved external symbol WinMain@16”