Форум программистов, компьютерный форум CyberForum.ru

Undefined reference to - C++

Восстановить пароль Регистрация
 
skales007
16 / 16 / 4
Регистрация: 09.07.2015
Сообщений: 87
Записей в блоге: 2
30.07.2015, 22:54     Undefined reference to #1
Много уже тем создано по даннму вопросу, но решения так и не нашел.. Есть конечно догадки, но как реализовать все равно не знаю. Прошу сильно не пинать, пытался сам разобраться, так и не смог.
Начну по порядку:
Определил класс GradeBook не расскрывая реализации элемент функций:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <iostream>
using namespace std;
 
class GradeBook
{
    public:
        GradeBook(string);
        void setCourseName(string);
        string getCourseName();
        void showMessage();
    private:
        string courseName;
};
Сохранил в GradeBook.h

Далее определил элемент-функции в файле GradeBook.cpp
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream>
using namespace std;
#include "GradeBook.h"
 
 
GradeBook::GradeBook(string imya)
    {
        setCourseName(imya);
    }
void GradeBook::setCourseName(string name)
    {
        courseName = name;
    }
string GradeBook::getCourseName()
    {
        return courseName;
    }
void GradeBook::showMessage()
    {
        cout << "Welcome to the GradeBook for " << " !" << endl;
    }
Ну и в конце тест всего что натворил:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <iostream>
using namespace std;
#include "GradeBook.h"
 
int main()
{
    GradeBook gradeBook1("CS101 Introduction to C++ Programming");
    GradeBook gradeBook2("CS102 Data Structures in C++");
    
    cout << "gradeBook1 created for: " << gradeBook1.getCourseName() << endl;
    cout << "gradeBook2 created for: " << gradeBook2.getCourseName() << endl;
    
    return 0;
}
В результате компиляции
Кликните здесь для просмотра всего текста
C:\Users\skales\AppData\Local\Temp\ccd7HIYM.o fig03_13.cpp.text+0x48): undefined reference to `GradeBook::GradeBook(std::string)'
C:\Users\skales\AppData\Local\Temp\ccd7HIYM.o fig03_13.cpp.text+0x96): undefined reference to `GradeBook::GradeBook(std::string)'
C:\Users\skales\AppData\Local\Temp\ccd7HIYM.o fig03_13.cpp.text+0xbe): undefined reference to `GradeBook::getCourseName()'
C:\Users\skales\AppData\Local\Temp\ccd7HIYM.o fig03_13.cpp.text+0x10b): undefined reference to `GradeBook::getCourseName()'
C:\Users\skales\Desktop\Îáó÷åíèå\my6\collect2.exe [Error] ld returned 1 exit status


П.С. Читаю книгу Дейтела. С нее, собственно, этот пример.

Заранее благодарю за советы
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.07.2015, 22:54     Undefined reference to
Посмотрите здесь:

C++ undefined reference...
C++ undefined reference
C++ undefined reference
C++ Problem - Undefined reference to
C++ undefined reference to `A::a'
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Kerry_Jr
Модератор
 Аватар для Kerry_Jr
1855 / 1651 / 574
Регистрация: 14.05.2014
Сообщений: 4,726
Записей в блоге: 1
Завершенные тесты: 5
30.07.2015, 22:56     Undefined reference to #2
skales007, компилируете чем и как?
skales007
16 / 16 / 4
Регистрация: 09.07.2015
Сообщений: 87
Записей в блоге: 2
30.07.2015, 22:58  [ТС]     Undefined reference to #3
Kerry_Jr, компилировал в Dev-Cpp, а по поводу того как - просто "компилировать" нажал
Humanoid
Почетный модератор
 Аватар для Humanoid
9697 / 3747 / 140
Регистрация: 12.06.2008
Сообщений: 11,301
30.07.2015, 22:58     Undefined reference to #4
Надо вначале скомпилировать сам класс GradeBook.cpp, а потом при компиляции main.cpp (или как у вас файл называется) нужно линковать объектный файл от GradeBook.
skales007
16 / 16 / 4
Регистрация: 09.07.2015
Сообщений: 87
Записей в блоге: 2
30.07.2015, 23:01  [ТС]     Undefined reference to #5
При компиляции класса GradeBook тоже ошибка
Кликните здесь для просмотра всего текста
C:\Program Files (x86)\Dev-Cpp\MinGW64\x86_64-w64-mingw32\lib\libmingw32.a(lib64_libmingw32_a-crt0_c.o) In function `main':
18 C:\crossdev\src\mingw-w64-v3-git\mingw-w64-crt\crt\crt0_c.c undefined reference to `WinMain'
C:\Users\skales\Desktop\Îáó÷åíèå\my6\collect2.exe [Error] ld returned 1 exit status

Но ведь, если я правильно понимаю, тут функции main и не должно быть.

В книге написано:
Кликните здесь для просмотра всего текста
Перед исполнением этой программы оба файла исходного кода на рис. 3.12 и 3.13 должны быть компили*рованы, а затем скомпонованы друг с другом, т.е. вызовы элемент-функций в коде клиента должны быть привязаны к реализациям элемент-функций класса — эта работа выполняется компоновщиком.

Но, как это осуществлять я не в курсе)
Kerry_Jr
Модератор
 Аватар для Kerry_Jr
1855 / 1651 / 574
Регистрация: 14.05.2014
Сообщений: 4,726
Записей в блоге: 1
Завершенные тесты: 5
30.07.2015, 23:15     Undefined reference to #6
Цитата Сообщение от skales007 Посмотреть сообщение
тоже ошибка
в dev-c++ проекты создаются? Или все файлы по отдельности компилируются?
Для компиляции используйте
Код
g++ -c GradeBook.h -o GradeBook.o
g++ -c main.cpp -o main.o
g++ main.o GradeBook.o -o GradeBook.exe
skales007
16 / 16 / 4
Регистрация: 09.07.2015
Сообщений: 87
Записей в блоге: 2
30.07.2015, 23:20  [ТС]     Undefined reference to #7
Цитата Сообщение от Kerry_Jr Посмотреть сообщение
в dev-c++ проекты создаются? Или все файлы по отдельности компилируются?
Вообще проекты создаются, но я не создавал проекты, а просто сделал три файла.


Цитата Сообщение от Kerry_Jr Посмотреть сообщение
Код CodeВыделить код
g++ -c GradeBook.h -o GradeBook.o
g++ -c main.cpp -o main.o
g++ main.o GradeBook.o -o GradeBook.exe
Дико извиняюсь, но с трудом понимаю о чем тут речь
Kerry_Jr
Модератор
 Аватар для Kerry_Jr
1855 / 1651 / 574
Регистрация: 14.05.2014
Сообщений: 4,726
Записей в блоге: 1
Завершенные тесты: 5
30.07.2015, 23:29     Undefined reference to #8
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Цитата Сообщение от skales007 Посмотреть сообщение
но я не создавал проекты
а зря создайте проект, добавьте в него Ваши файлы, и он должен будет успешно скомпилироваться

Добавлено через 6 минут
Цитата Сообщение от skales007 Посмотреть сообщение
Код
g++ -c GradeBook.h -o GradeBook.o
g++ -c main.cpp -o main.o
g++ main.o GradeBook.o -o GradeBook.exe
хотя нет, все равно не так
skales007
16 / 16 / 4
Регистрация: 09.07.2015
Сообщений: 87
Записей в блоге: 2
30.07.2015, 23:41  [ТС]     Undefined reference to #9
Спасибо Kerry_Jr , разобрался.. Действительно, создал проект, в него включил все мои файлы и все отлично скомпилировалось и выполнилось. Благодарю! Теперь буду знать, что проекты, предпочтительнее)

Добавлено через 7 минут
Пользуясь случаем, спрошу. Все что я на данный момент компилировал имеет вес в среднем около 1.8Мб. Понимаю, что сам код написанный мной весит совсем не много, осюда вопрос - что в оставшейся части?
Kerry_Jr
Модератор
 Аватар для Kerry_Jr
1855 / 1651 / 574
Регистрация: 14.05.2014
Сообщений: 4,726
Записей в блоге: 1
Завершенные тесты: 5
30.07.2015, 23:54     Undefined reference to #10
skales007, 1.8Мб - это exe??? Или вес проекта?
skales007
16 / 16 / 4
Регистрация: 09.07.2015
Сообщений: 87
Записей в блоге: 2
30.07.2015, 23:58  [ТС]     Undefined reference to #11
Да, это уже получившийся .ехе
Kerry_Jr
Модератор
 Аватар для Kerry_Jr
1855 / 1651 / 574
Регистрация: 14.05.2014
Сообщений: 4,726
Записей в блоге: 1
Завершенные тесты: 5
31.07.2015, 01:42     Undefined reference to #12
Цитата Сообщение от skales007 Посмотреть сообщение
Да, это уже получившийся .ехе
Стало очень интересно, решил проверить, и у меня exe весит 42кБ, т.е в 44 раза меньше, чем у Вас.
skales007
16 / 16 / 4
Регистрация: 09.07.2015
Сообщений: 87
Записей в блоге: 2
31.07.2015, 01:48  [ТС]     Undefined reference to #13
Kerry_Jr,
Стало очень интересно, решил проверить, и у меня exe весит 42кБ, т.е в 44 раза меньше, чем у Вас.
Вот вот.. откуда там взяться такому весу, если кода полторы строки.. Я так понимаю это компилятор виноват?
Humanoid
Почетный модератор
 Аватар для Humanoid
9697 / 3747 / 140
Регистрация: 12.06.2008
Сообщений: 11,301
31.07.2015, 08:20     Undefined reference to #14
Может в режиме отладки компилировали?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
31.07.2015, 08:22     Undefined reference to
Еще ссылки по теме:

undefined reference to C++
Undefined reference to C++
C++ Undefined reference to `GrPlot'

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
skales007
16 / 16 / 4
Регистрация: 09.07.2015
Сообщений: 87
Записей в блоге: 2
31.07.2015, 08:22  [ТС]     Undefined reference to #15
Humanoid, да нет, релиз поставил.. и кстати в режиме отладки вообще не компилится, dev cpp крашится сразу же
Yandex
Объявления
31.07.2015, 08:22     Undefined reference to
Ответ Создать тему
Опции темы

Текущее время: 22:57. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru