构建C ++文件:.h和.cpp

时间:2014-02-17 21:53:41

标签: c++ build

我们正在尝试学习如何使用.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;
};

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

2 个答案:

答案 0 :(得分:1)

链接器无法找到你的WinMain(),这是Windows应用程序的一个临界点。 创建新的控制台项目并将您的文件复制到其中,这应该有所帮助。

答案 1 :(得分:0)

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