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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
skales007
16 / 16 / 4
Регистрация: 09.07.2015
Сообщений: 87
Записей в блоге: 2
#1

Undefined reference to - C++

30.07.2015, 22:54. Просмотров 890. Ответов 14
Метки нет (Все метки)

Много уже тем создано по даннму вопросу, но решения так и не нашел.. Есть конечно догадки, но как реализовать все равно не знаю. Прошу сильно не пинать, пытался сам разобраться, так и не смог.
Начну по порядку:
Определил класс 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++):

Странная ошибка: [Linker error] undefined reference to `__dyn_tls_init_callback' [Linker error] undefined reference to ld returned 1 exit status - C++
Здравствуйте. Вот недавно начал изучать книгу &quot;С++ для чайников&quot; Стефан Р. Девис 4-е издание. И напоролся на кучу ошибок) Но смог все...

undefined reference to - C++
http://www.cyberforum.ru/qt/thread861722.html Не в том разделе создал тему, и поэтому даю линк на неё. Описание ошибки там же

Undefined reference to - C++
Помогите, пожалуйста. Нужно было написать программу с использованием шаблона. Появляется ошибка &quot;undefined reference to...

Undefined reference to - C++
Есть класс NavyPort. Его заголовок: #ifndef NAVYPORT_H #define NAVYPORT_H class NavyPort { public: NavyPort(bool...

undefined reference to `A::a' - C++
//==========================================================================================================================================...

undefined reference... - C++
Добрый день.На C перешел совсем недавно,поэтому могу не знать всех тонкостей.Подскажите,в какую сторону копать для исправления следующей...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Kerry_Jr
Модератор
Эксперт PHP
2185 / 1981 / 692
Регистрация: 14.05.2014
Сообщений: 5,791
Записей в блоге: 1
Завершенные тесты: 5
30.07.2015, 22:56 #2
skales007, компилируете чем и как?
skales007
16 / 16 / 4
Регистрация: 09.07.2015
Сообщений: 87
Записей в блоге: 2
30.07.2015, 22:58  [ТС] #3
Kerry_Jr, компилировал в Dev-Cpp, а по поводу того как - просто "компилировать" нажал
Humanoid
Почетный модератор
9835 / 3833 / 164
Регистрация: 12.06.2008
Сообщений: 11,460
30.07.2015, 22:58 #4
Надо вначале скомпилировать сам класс GradeBook.cpp, а потом при компиляции main.cpp (или как у вас файл называется) нужно линковать объектный файл от GradeBook.
skales007
16 / 16 / 4
Регистрация: 09.07.2015
Сообщений: 87
Записей в блоге: 2
30.07.2015, 23:01  [ТС] #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
Модератор
Эксперт PHP
2185 / 1981 / 692
Регистрация: 14.05.2014
Сообщений: 5,791
Записей в блоге: 1
Завершенные тесты: 5
30.07.2015, 23:15 #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  [ТС] #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
Модератор
Эксперт PHP
2185 / 1981 / 692
Регистрация: 14.05.2014
Сообщений: 5,791
Записей в блоге: 1
Завершенные тесты: 5
30.07.2015, 23:29 #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  [ТС] #9
Спасибо Kerry_Jr , разобрался.. Действительно, создал проект, в него включил все мои файлы и все отлично скомпилировалось и выполнилось. Благодарю! Теперь буду знать, что проекты, предпочтительнее)

Добавлено через 7 минут
Пользуясь случаем, спрошу. Все что я на данный момент компилировал имеет вес в среднем около 1.8Мб. Понимаю, что сам код написанный мной весит совсем не много, осюда вопрос - что в оставшейся части?
Kerry_Jr
Модератор
Эксперт PHP
2185 / 1981 / 692
Регистрация: 14.05.2014
Сообщений: 5,791
Записей в блоге: 1
Завершенные тесты: 5
30.07.2015, 23:54 #10
skales007, 1.8Мб - это exe??? Или вес проекта?
skales007
16 / 16 / 4
Регистрация: 09.07.2015
Сообщений: 87
Записей в блоге: 2
30.07.2015, 23:58  [ТС] #11
Да, это уже получившийся .ехе
Kerry_Jr
Модератор
Эксперт PHP
2185 / 1981 / 692
Регистрация: 14.05.2014
Сообщений: 5,791
Записей в блоге: 1
Завершенные тесты: 5
31.07.2015, 01:42 #12
Цитата Сообщение от skales007 Посмотреть сообщение
Да, это уже получившийся .ехе
Стало очень интересно, решил проверить, и у меня exe весит 42кБ, т.е в 44 раза меньше, чем у Вас.
skales007
16 / 16 / 4
Регистрация: 09.07.2015
Сообщений: 87
Записей в блоге: 2
31.07.2015, 01:48  [ТС] #13
Kerry_Jr,
Стало очень интересно, решил проверить, и у меня exe весит 42кБ, т.е в 44 раза меньше, чем у Вас.
Вот вот.. откуда там взяться такому весу, если кода полторы строки.. Я так понимаю это компилятор виноват?
Humanoid
Почетный модератор
9835 / 3833 / 164
Регистрация: 12.06.2008
Сообщений: 11,460
31.07.2015, 08:20 #14
Может в режиме отладки компилировали?
skales007
16 / 16 / 4
Регистрация: 09.07.2015
Сообщений: 87
Записей в блоге: 2
31.07.2015, 08:22  [ТС] #15
Humanoid, да нет, релиз поставил.. и кстати в режиме отладки вообще не компилится, dev cpp крашится сразу же
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
31.07.2015, 08:22
Привет! Вот еще темы с ответами:

undefined reference - C++
Пытаюсь разобраться с Box2D. Выпадает куча ошибок типа undefined reference to `b2World::b2World(b2Vec2 const&amp;)'| Box2D.h файл...

undefined reference - C++
Доброго времени суток! Есть следующий код: #include &lt;iostream&gt; using namespace std; enum direction {Up, Down, Left, Right}; ...

Undefined reference to - C++
Matrix.h #pragma once #include &lt;iostream&gt; template &lt;typename T&gt; class Matrix { private: int n1, n2; T **mas; public:...

Ошибка undefined reference to - C++
При сборке выбивает ошибку: undefined reference to `Atom:: DoBCC(float, int, int, int)'. Ткните носом, пожалуйста, где ошибка. Заранее...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
31.07.2015, 08:22
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru