我们正在尝试学习如何使用.h和.cpp文件构建c ++文件。我们一直得到同样的错误:错误LNK2019:在函数_ _tmainCRTStartup中引用了未解析的外部符号 WinMain @ 16,我们不知道我们做错了什么。以下是我们3个文件中的代码:
// First cpp file
#include "stdafx.h"
#include <iostream>
#include "chayaGradeBook.h.h"
namespace std;
//constructor
GradeBook::GradeBook (string name)
{
setCourseName(name);
}
void GradeBook::setCourseName(string name)
{
if (name.size() <= 25)
courseName=name;
if (name.size() > 25)
{
courseName = name.substr (0, 25);
cerr << "Name \"" <<name<< "\"exceeds maximum length (25).\n"<< "Limiting courseName to first 25 charachters.\n"<<endl;
}
}
string GradeBook::getCourseName() const
{
return courseName;
}
void GradeBook::displayMessage() const
}
cout << "Welcome to the grade book for \n" << getCourseName() << "!" <<endl;
}
// chayaGradeBook.h.h
#include <string>
//Grade Book class definition
class GradeBook
{
public:
explicit GradeBook (std::string);
void setCourseName (std::string);
std::string getCourseName() const;
void displayMessage() const;
private:
std::string courseName;
};
#include "stdafx.h"
#include <iostream>
#include "chayaGradeBook.h.h"
#include "chayaGradeBook.cpp"
using namespace std;
int main()
{
GradeBook gradeBook1 ("CS101 Introduction to Programming in C++");
GradeBook gradeBook2 ("CS102 Data Structures");
cout<< "gradeBook1's initial course name is: "
<< gradeBook1.getCourseName()
<<"\ngradeBook2's inital course name is: "
<< gradeBook2.getCourseName()<< endl;
gradeBook1.setCourseName("CS101 C++ Programming");
cout <<"\ngradeBook1's course name is: "
<<gradeBook1.getCourseName()
<< "\ngradeBook2's course name is: "
<< gradeBook2.getCOurseName() <<endl;
}
答案 0 :(得分:1)
链接器无法找到你的WinMain(),这是Windows应用程序的一个临界点。 创建新的控制台项目并将您的文件复制到其中,这应该有所帮助。
答案 1 :(得分:0)
这是Windows操作系统的特性。 Microsoft认为WinMain
更适合“本机Windows”应用程序(而不是main
):-)
根据逻辑,“本机Windows”应用程序与Windows密切相关,基于本机Windows API并且不可移植。就C ++而言,这可能是一个“独立环境”的案例
您需要在IDE中使用“控制台应用程序项目”...