Unresolved External Help.

Discussion in 'C++' started by Kyle Sheldon, Jan 16, 2004.

  1. Kyle Sheldon

    Kyle Sheldon Guest

    I'm currently working on a class "Course" and I'm getting an unresolved
    external error when trying to compile.

    I understand that unresolved externals are caused by declaration of methods
    that are not defined, but I think I defined all my methods so this one has
    got me stumped. Any help would be much appreciated.

    Thank you for your time,

    Kyle

    course.h
    --------
    #ifndef COURSE_H
    #define COURSE_H

    #include <string>
    using namespace std;

    class Course
    {
    private:
    string id;
    int credithours;
    string instructor;
    string days;
    string time;
    string room;
    int capacity;
    string roster[50];
    int size;
    public:
    Course();// Default Constructor
    void ReadCourse(istream & fin);// Reads course information from file.
    void WriteCourse(ostream & fout);// Writes course information to file.
    void PrintData();// Prints's all data except roster to screen with labels.
    void PrintRoster(ostream & out);// Prints Roster to any output stream.
    void AddStudent(ostream & out, string newstudent);// Adds student to
    roster.
    };

    #endif


    Course.cpp
    ----------
    #include "course.h"
    #include <iostream>
    using namespace std;

    Course::Course()
    {
    id="0";
    }

    void Course::ReadCourse(istream & fin)// Reads course information from file.
    {
    fin >> id;
    fin >> credithours;
    getline(fin, instructor);
    fin >> days;
    getline(fin, time);
    getline(fin, room);
    fin >> capacity;
    fin >> size;
    for (int i=0; i<=size; i++)
    {
    getline(fin, roster);
    }
    }

    void Course::WriteCourse(ostream & fout)// Writes course information to
    file.
    {
    fout << id << " " << credithours << "\n";
    fout << instructor << "\n";
    fout << days << " " << time << "\n";
    fout << room << "\n";
    fout << capacity << " " << size << "\n";
    for (int i=0; i<=size; i++)
    {
    fout << roster << "\n";
    }
    }

    void Course::printData()// Prints's all data except roster to screen with
    labels.
    {
    cout << "Course ID: " << id << endl;
    cout << "Credits: " << credithours << endl;
    cout << "Instructor: " << instructor << endl;
    cout << "Days and Time: " << days << " " << time << endl;
    cout << "Capacity: " << capacity << endl;
    cout << "Enrolled: " << size << endl;
    }

    void Course::printRoster(ostream & out)// Prints Roster to any output
    stream.
    {
    for (int i=0; i<=size; i++)
    {
    out << roster << endl;
    }
    }

    void Course::AddStudent(ostream & out, string newstudent)// Adds student to
    roster.
    {
    size+=1;
    roster[size]=newstudent;
    }

    ERROR:
    LIBCD.lib(crt0.obj) : error LNK2019: unresolved external symbol _main
    referenced in function _mainCRTStartup
    Debug/Project 1.exe : fatal error LNK1120: 1 unresolved externals
     
    Kyle Sheldon, Jan 16, 2004
    #1
    1. Advertising

  2. On Fri, 16 Jan 2004 09:52:25 -0600, Kyle Sheldon wrote:

    > I'm currently working on a class "Course" and I'm getting an unresolved
    > external error when trying to compile.
    >
    > I understand that unresolved externals are caused by declaration of
    > methods that are not defined, but I think I defined all my methods so
    > this one has got me stumped. Any help would be much appreciated.
    >
    >


    > ERROR:
    > LIBCD.lib(crt0.obj) : error LNK2019: unresolved external symbol _main
    > referenced in function _mainCRTStartup Debug/Project 1.exe : fatal error
    > LNK1120: 1 unresolved externals


    Every C++ program needs a "main" function, either written by you or
    provided implicitly by some library. I guess you need to write one.
     
    Simon Saunders, Jan 16, 2004
    #2
    1. Advertising

  3. "Kyle Sheldon" <> wrote...
    > I'm currently working on a class "Course" and I'm getting an unresolved
    > external error when trying to compile.


    Actually, you get this error when trying to _link_, not compile.

    > I understand that unresolved externals are caused by declaration of

    methods
    > that are not defined, but I think I defined all my methods so this one has
    > got me stumped. Any help would be much appreciated.
    > [...]
    >
    > ERROR:
    > LIBCD.lib(crt0.obj) : error LNK2019: unresolved external symbol _main
    > referenced in function _mainCRTStartup
    > Debug/Project 1.exe : fatal error LNK1120: 1 unresolved externals


    Every C++ program has to contain a function called 'main'. Execution
    starts with it. When you try to link your [incomplete] program, your
    compiler is trying to resolve a reference to 'main'. Two solutions:
    either stop trying to link an incomplete program, or add 'main' function.

    Victor
     
    Victor Bazarov, Jan 16, 2004
    #3
  4. Kyle Sheldon

    JHenstay Guest

    "Kyle Sheldon" <> wrote in message news:<bu91cb$pv5$>...
    > I'm currently working on a class "Course" and I'm getting an unresolved
    > external error when trying to compile.
    >
    > I understand that unresolved externals are caused by declaration of methods
    > that are not defined, but I think I defined all my methods so this one has
    > got me stumped. Any help would be much appreciated.
    >
    > Thank you for your time,
    >
    > Kyle
    >
    > course.h
    > --------
    > #ifndef COURSE_H
    > #define COURSE_H
    >
    > #include <string>
    > using namespace std;
    >
    > class Course
    > {
    > private:
    > string id;
    > int credithours;
    > string instructor;
    > string days;
    > string time;
    > string room;
    > int capacity;
    > string roster[50];
    > int size;
    > public:
    > Course();// Default Constructor
    > void ReadCourse(istream & fin);// Reads course information from file.
    > void WriteCourse(ostream & fout);// Writes course information to file.
    > void PrintData();// Prints's all data except roster to screen with labels.
    > void PrintRoster(ostream & out);// Prints Roster to any output stream.
    > void AddStudent(ostream & out, string newstudent);// Adds student to
    > roster.
    > };
    >
    > #endif
    >
    >
    > Course.cpp
    > ----------
    > #include "course.h"
    > #include <iostream>
    > using namespace std;
    >
    > Course::Course()
    > {
    > id="0";
    > }
    >
    > void Course::ReadCourse(istream & fin)// Reads course information from file.
    > {
    > fin >> id;
    > fin >> credithours;
    > getline(fin, instructor);
    > fin >> days;
    > getline(fin, time);
    > getline(fin, room);
    > fin >> capacity;
    > fin >> size;
    > for (int i=0; i<=size; i++)
    > {
    > getline(fin, roster);
    > }
    > }
    >
    > void Course::WriteCourse(ostream & fout)// Writes course information to
    > file.
    > {
    > fout << id << " " << credithours << "\n";
    > fout << instructor << "\n";
    > fout << days << " " << time << "\n";
    > fout << room << "\n";
    > fout << capacity << " " << size << "\n";
    > for (int i=0; i<=size; i++)
    > {
    > fout << roster << "\n";
    > }
    > }
    >
    > void Course::printData()// Prints's all data except roster to screen with
    > labels.
    > {
    > cout << "Course ID: " << id << endl;
    > cout << "Credits: " << credithours << endl;
    > cout << "Instructor: " << instructor << endl;
    > cout << "Days and Time: " << days << " " << time << endl;
    > cout << "Capacity: " << capacity << endl;
    > cout << "Enrolled: " << size << endl;
    > }
    >
    > void Course::printRoster(ostream & out)// Prints Roster to any output
    > stream.
    > {
    > for (int i=0; i<=size; i++)
    > {
    > out << roster << endl;
    > }
    > }
    >
    > void Course::AddStudent(ostream & out, string newstudent)// Adds student to
    > roster.
    > {
    > size+=1;
    > roster[size]=newstudent;
    > }
    >
    > ERROR:
    > LIBCD.lib(crt0.obj) : error LNK2019: unresolved external symbol _main
    > referenced in function _mainCRTStartup
    > Debug/Project 1.exe : fatal error LNK1120: 1 unresolved externals



    It looks like the problem is your project actually is missing a "main"
    function for running. The code above defines a Class, but a Class by
    itself doesn't do much. You need a program which instantiates the
    Class as an Object, then you would utilize the Methods declared above
    on the Object:

    int main (void)
    {
    .....
    Course Mathmatics = new Course;
    Mathmatics->PrintRoster(pStdOut);
    .....
    }

    If you create a program with a main function and link it with the
    compiled OBJect file of your Class, you should not get that linkage
    error.

    -JH
     
    JHenstay, Jan 16, 2004
    #4
  5. Kyle Sheldon

    Guest

    "Kyle Sheldon" <> wrote in message news:<bu91cb$pv5$>...
    [snip]
    > ERROR:
    > LIBCD.lib(crt0.obj) : error LNK2019: unresolved external symbol _main
    > referenced in function _mainCRTStartup
    > Debug/Project 1.exe : fatal error LNK1120: 1 unresolved externals


    Good thing you included the error message.

    You've not defined the symbol main. Probably you are using one of
    Microsoft's compilers and have screwed up the type of project so
    as to have it want a main when you've provided it something like
    WinMain, or the other way around. It's nothing to do with the
    code, so you need help from a windows coding group to solve it.
    Socks
     
    , Jan 16, 2004
    #5
    1. Advertising

Want to reply to this thread or ask your own question?

It takes just 2 minutes to sign up (and it's free!). Just click the sign up button to choose a username and then you can ask your own questions on the forum.
Similar Threads
  1. John Harrison
    Replies:
    0
    Views:
    1,079
    John Harrison
    Jul 20, 2003
  2. Izak Pretorius
    Replies:
    2
    Views:
    1,629
    Christopher
    Sep 14, 2003
  3. Rodolphe
    Replies:
    4
    Views:
    1,129
    Rodolphe
    Oct 3, 2003
  4. CoolDudeMan

    Help with Unresolved External.

    CoolDudeMan, Jan 16, 2004, in forum: C++
    Replies:
    2
    Views:
    455
    CoolDudeMan
    Jan 16, 2004
  5. Scott Allen
    Replies:
    8
    Views:
    11,050
    Scott Allen
    May 2, 2004
Loading...

Share This Page