Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.88/25: Рейтинг темы: голосов - 25, средняя оценка - 4.88
18 / 18 / 9
Регистрация: 09.07.2015
Сообщений: 91
Записей в блоге: 2

Undefined reference to

30.07.2015, 22:54. Показов 5308. Ответов 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\ccd7H IYM.o fig03_13.cpp.text+0x48): undefined reference to `GradeBook::GradeBook(std::string)'
C:\Users\skales\AppData\Local\Temp\ccd7H IYM.o fig03_13.cpp.text+0x96): undefined reference to `GradeBook::GradeBook(std::string)'
C:\Users\skales\AppData\Local\Temp\ccd7H IYM.o fig03_13.cpp.text+0xbe): undefined reference to `GradeBook::getCourseName()'
C:\Users\skales\AppData\Local\Temp\ccd7H IYM.o fig03_13.cpp.text+0x10b): undefined reference to `GradeBook::getCourseName()'
C:\Users\skales\Desktop\Îáó÷åíèå\my6\col lect2.exe [Error] ld returned 1 exit status


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

Заранее благодарю за советы
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
30.07.2015, 22:54
Ответы с готовыми решениями:

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

Undefined reference
/tmp/ccQRqGm4.o: In function `PoolAllocator::PoolAllocator(unsigned int, unsigned int)': PoolAllocator.cpp:(.text+0x14): undefined...

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

14
Эксперт PHP
 Аватар для Kerry_Jr
3106 / 2591 / 1219
Регистрация: 14.05.2014
Сообщений: 7,236
Записей в блоге: 1
30.07.2015, 22:56
skales007, компилируете чем и как?
0
18 / 18 / 9
Регистрация: 09.07.2015
Сообщений: 91
Записей в блоге: 2
30.07.2015, 22:58  [ТС]
Kerry_Jr, компилировал в Dev-Cpp, а по поводу того как - просто "компилировать" нажал
0
Почетный модератор
 Аватар для Humanoid
11557 / 4352 / 452
Регистрация: 12.06.2008
Сообщений: 12,454
30.07.2015, 22:58
Надо вначале скомпилировать сам класс GradeBook.cpp, а потом при компиляции main.cpp (или как у вас файл называется) нужно линковать объектный файл от GradeBook.
0
18 / 18 / 9
Регистрация: 09.07.2015
Сообщений: 91
Записей в блоге: 2
30.07.2015, 23:01  [ТС]
При компиляции класса GradeBook тоже ошибка
Кликните здесь для просмотра всего текста
C:\Program Files (x86)\Dev-Cpp\MinGW64\x86_64-w64-mingw32\lib\libmingw32.a(lib64_libmingw3 2_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\col lect2.exe [Error] ld returned 1 exit status

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

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

Но, как это осуществлять я не в курсе)
0
Эксперт PHP
 Аватар для Kerry_Jr
3106 / 2591 / 1219
Регистрация: 14.05.2014
Сообщений: 7,236
Записей в блоге: 1
30.07.2015, 23:15
Цитата Сообщение от skales007 Посмотреть сообщение
тоже ошибка
в dev-c++ проекты создаются? Или все файлы по отдельности компилируются?
Для компиляции используйте
Code
1
2
3
g++ -c GradeBook.h -o GradeBook.o
g++ -c main.cpp -o main.o
g++ main.o GradeBook.o -o GradeBook.exe
0
18 / 18 / 9
Регистрация: 09.07.2015
Сообщений: 91
Записей в блоге: 2
30.07.2015, 23:20  [ТС]
Цитата Сообщение от 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
Дико извиняюсь, но с трудом понимаю о чем тут речь
0
Эксперт PHP
 Аватар для Kerry_Jr
3106 / 2591 / 1219
Регистрация: 14.05.2014
Сообщений: 7,236
Записей в блоге: 1
30.07.2015, 23:29
Лучший ответ Сообщение было отмечено skales007 как решение

Решение

Цитата Сообщение от skales007 Посмотреть сообщение
но я не создавал проекты
а зря создайте проект, добавьте в него Ваши файлы, и он должен будет успешно скомпилироваться

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

Добавлено через 7 минут
Пользуясь случаем, спрошу. Все что я на данный момент компилировал имеет вес в среднем около 1.8Мб. Понимаю, что сам код написанный мной весит совсем не много, осюда вопрос - что в оставшейся части?
0
Эксперт PHP
 Аватар для Kerry_Jr
3106 / 2591 / 1219
Регистрация: 14.05.2014
Сообщений: 7,236
Записей в блоге: 1
30.07.2015, 23:54
skales007, 1.8Мб - это exe??? Или вес проекта?
0
18 / 18 / 9
Регистрация: 09.07.2015
Сообщений: 91
Записей в блоге: 2
30.07.2015, 23:58  [ТС]
Да, это уже получившийся .ехе
0
Эксперт PHP
 Аватар для Kerry_Jr
3106 / 2591 / 1219
Регистрация: 14.05.2014
Сообщений: 7,236
Записей в блоге: 1
31.07.2015, 01:42
Цитата Сообщение от skales007 Посмотреть сообщение
Да, это уже получившийся .ехе
Стало очень интересно, решил проверить, и у меня exe весит 42кБ, т.е в 44 раза меньше, чем у Вас.
0
18 / 18 / 9
Регистрация: 09.07.2015
Сообщений: 91
Записей в блоге: 2
31.07.2015, 01:48  [ТС]
Kerry_Jr,
Стало очень интересно, решил проверить, и у меня exe весит 42кБ, т.е в 44 раза меньше, чем у Вас.
Вот вот.. откуда там взяться такому весу, если кода полторы строки.. Я так понимаю это компилятор виноват?
0
Почетный модератор
 Аватар для Humanoid
11557 / 4352 / 452
Регистрация: 12.06.2008
Сообщений: 12,454
31.07.2015, 08:20
Может в режиме отладки компилировали?
0
18 / 18 / 9
Регистрация: 09.07.2015
Сообщений: 91
Записей в блоге: 2
31.07.2015, 08:22  [ТС]
Humanoid, да нет, релиз поставил.. и кстати в режиме отладки вообще не компилится, dev cpp крашится сразу же
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
31.07.2015, 08:22
Помогаю со студенческими работами здесь

Undefined reference to
Как это разрулить? someclass.h namespace SP { Class SomeClass { SomeClass(){}; ~SomeClass(){};

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

Undefined reference to
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 `A::a'
//==========================================================================================================================================...

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


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2). Унарный минус обозначается как ! в-строка - входное арифметическое выражение в инфиксной(обычной). . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru