| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Для новичков > Не собирается после отделения интерфейса класса |
| Автор: n199a 2.2.2014, 00:02 | ||||||||
| Почему проект не собирается после отделения интерфейса класса? Ошибка при сборке:
GradeBook.h:
GradeBook.cpp:
main:
|
| Автор: vinter 2.2.2014, 07:58 |
| GradeBook.cpp не участвует в компиляции. Проверь как ты компилируешь программу. |
| Автор: bsa 2.2.2014, 16:13 |
| n199a, а еще надо было ставить http://forum.vingrad.ru/faq/topic-190805.html. |
| Автор: n199a 3.2.2014, 20:43 | ||||
На сей раз создавал через меню "Проект" Сделал как в инструкции:
Ошибки (в инструкции приведен пример для другой ошибки):
Погуглив по форуму нашёл похожую тему, но в ней было связано со звуком. http://forum.vingrad.ru/forum/topic-228960/0.html |
| Автор: xvr 3.2.2014, 21:11 |
Файл GradeBook.cpp не включен в проект |
| Автор: n199a 3.2.2014, 21:58 | ||||||
Включил #include "GradeBook.cpp" в fig04_10.cpp. Результат:
А если убрать из GradeBook.h эти строки:
то, результат:
|
| Автор: Alexeis 3.2.2014, 22:53 |
cpp файлы не включают друг в друга. Они для этого не предназначены. Это иногда может сработать, но вообще это не правильно. Кроме *.cpp /*.h файлов есть еще файл проекта. Не знаю как он там в gcc называется. Вероятно это make файл. Но обычно компилятору передаются все cpp шники по отдельности и пути к хидерам. Компилятор из них создает объектные файлы. Отдельные для каждого cpp файла. И вот эти вот объектные файлы собирает линкер. Правда линкеру еще нужно прицепить CRT и другие библиотеки, но это уже детали. Каждый cpp файл должен включать все необходимые ему заголовочные файлы. Обычно по ним линкер определяет как между собой связать объектные файлы. |
| Автор: n199a 3.2.2014, 23:07 | ||
У меня включает же. Почему этот Geany не собирает? Может в make дописать что-то надо? |
| Автор: xvr 4.2.2014, 08:41 |
Именно. Если делать все по уму, то в Makefile'е нужно отдельно компилировать fig04_10.cpp в fig04_10.o, GradeBook.cpp в GradeBook.o, а потом линковать fig04_10.o и GradeBook.o в исполняемый файл. Покажите ваш Makefile |
| Автор: n199a 4.2.2014, 14:08 | ||||
Получается, всякий раз, когда я решу сделать проект, надо будет редактировать makefile ? Первый раз сталкиваюсь с ним и не знаю что и куда... В папке с Geany есть такой filetypes.makefile, но судя по содержанию это не он?
|
| Автор: bsa 4.2.2014, 19:08 |
| n199a, это не то. Какая у тебя среда разработки и почему ее выбрал? как ты запускаешь компиляцию? |
| Автор: n199a 5.2.2014, 11:53 | ||
Geany 1.23 с MinGW 20120426. Запускаю компиляцию нажатием кнопки "Скомпилировать" (g++ -Wall -c "%f"). Оно то компилируется, но не собирается. |
| Автор: bsa 5.2.2014, 13:33 |
| n199a, ты не объяснил причину выбора этой IDE. Судя по всему, тебе она не подходит. Попробуй Qt Creator (надо установить пакет Qt для Windows) или Code::Blocks. |
| Автор: n199a 9.2.2014, 23:02 | ||
Выбор обусловился в простоте, не надо много кнопок тыкать... Code::Blocks не подхоит (не нравится). Qt как-то устанавливал, но не смог, не компилировались сорцы... |
| Автор: bsa 10.2.2014, 15:58 |
| Понятно. Если он у тебя стоит еще сделай следующее: 1. запусти 2. Файл - Новый файл или проект - Проект без использования Qt - Простой проект на C++, затем только далее. 3. Скопируй свои исходники в каталог нового проекта 4. Добавь исходники и хидеры к проекту (правой кнопкой по названию проекта или прописать в <название проекта>.pro) 5. Скомпилировать 6. Запустить |
| Автор: xvr 10.2.2014, 18:42 |
Тогда Notepad. Вообще никаких кнопок. а то, что он компилировать не умеет - не беда, Geany у тебя тоже не компилирует PS. В любой IDE сначала надо разобраться как создавать в ней проект, иначе собрать exe'ник не получится. Текст ввести - запросто (и без проекта), а вот что то с ним сделать дальше - очень и очень проблематично. |
| Автор: ZeUsM 11.2.2014, 11:45 |
| Возьмите CodeLite, есть и под windows и под Linux/Unix. |