生成C++文件:.h和.cpp

Build C++ files: .h and .cpp

本文关键字:cpp C++ 文件 生成      更新时间:2023-10-16

我们正在尝试学习如何使用.h和.cpp文件构建c++文件。我们不断得到相同的错误:错误LNK2019:未解析的外部符号WinMain@16在函数__tmainCRTStartup中引用,我们不知道自己做错了什么。这是我们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;
};

main.cpp文件:

#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;
}

Linker找不到您的WinMain(),这是windows应用程序的一个重要问题。创建新的控制台项目并将您的文件复制到其中,这应该会有所帮助。

这是Windows操作系统的特点。Microsoft认为WinMain更适合"本机Windows"应用程序(而不是main):-)
根据逻辑,"本机窗口"应用程序与Windows密切相关,基于本机Windows API,不可移植。就C++而言,这很可能是一个"独立环境"的例子
您需要IDE中的"控制台应用程序项目"。。。