![]() |
|
Модераторы: bsa |
![]()
|
|
| americanets |
|
||||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1100 Регистрация: 27.9.2006 Репутация: нет Всего: 12 |
если работаю в ide (KDevelop) то просто добавляю файлы в проект все компилица нормально.
но хочу руками пробовать, тк ide не дает понимания некоторым вещам,а для новичков как я это не есть хорошо. вопрос у меня есть файл cpp с реализацией класса, есть заголовочный hpp с описанием класса соответственно подключаю его
компилю
но компилятор выдает ошибку, как компилить проекты состоящие из нескольких файлов ? -------------------- Пусть популярную музыку слушают те, среди кого она популярна |
||||
|
|||||
| SABROG |
|
|||
![]() Hacker ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2481 Регистрация: 18.9.2006 Репутация: 1 Всего: 91 |
Создать makefile. А .hpp файл находится в той же папке что и test.cpp ?
|
|||
|
||||
| americanets |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1100 Регистрация: 27.9.2006 Репутация: нет Всего: 12 |
да, в той же папке что и test.cpp
Добавлено через 9 минут и 48 секунд а можно создавать make файлы автоматом ? -------------------- Пусть популярную музыку слушают те, среди кого она популярна |
|||
|
||||
| SABROG |
|
|||
![]() Hacker ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2481 Регистрация: 18.9.2006 Репутация: 1 Всего: 91 |
А на ошибку можно взглянуть ?
В *никсах для этого существует libtools, а в винде надо ручками писать, ну или использовать другие build системы, типа scons, cmake. |
|||
|
||||
| americanets |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1100 Регистрация: 27.9.2006 Репутация: нет Всего: 12 |
ошибки примерно седующие, не могу подключить test.hpp , не найден класс такой-то и т д, те по мимо что не может найти и подключить выводит ошибки компияции тк без заголовочного на самом деле описания класса нет,
точную формулировку привести не могу, тк нет под рукой компилятора за libtools спасибо, посмотрю, а винда меня не интересует -------------------- Пусть популярную музыку слушают те, среди кого она популярна |
|||
|
||||
| mekhanikus |
|
||||
|
Вольноопределяющийся ![]() Профиль Группа: Участник Сообщений: 186 Регистрация: 16.6.2008 Где: Спасск-Дальний Репутация: нет Всего: 1 |
Имхо, если имя файла в угловых скобках <>, то компилятор ищет его в папке "include". Файл, расположеный в той же папке, надо подать в кавычках "". |
||||
|
|||||
| americanets |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1100 Регистрация: 27.9.2006 Репутация: нет Всего: 12 |
mekhanikus, спасибо, попробую
-------------------- Пусть популярную музыку слушают те, среди кого она популярна |
|||
|
||||
| system |
|
||||||||
|
Новичок Профиль Группа: Участник Сообщений: 48 Регистрация: 16.5.2008 Репутация: 1 Всего: 2 |
Компилировать можно по разному
Например имеем файлы f1.cpp
f2.cpp
main.cpp
Обратите внимание что в main.cpp совершенно не понятно где находится реализация функций f1 и f2, Если скажем мы бы в файле main.cpp подключили #include "f1.cpp" и #include "f2.cpp" то могли бы скомпилить файл одной строкой g++ main.cpp -o main и получили на выходе исполняемый main. ( Но не могли скомплироать спосбом описанным ниже, скажу позже почему). Но тут несколько иначе. Поэтому можем скомплировать следующей последовательностью сначала создаем объектники а потом их компонуем в исполняемый файл на примере выше это будет выглядеть так
в последней строке происходит уже линковка объектников, т/е если мы комплируем таким образом, то задача откуда будет вызвана функция ложится на линковщик. Резюмируем так, Если компилятор видит реализацию функции то она не должна быть в линкуемых объектах иначе будет ошибка линковки, в нашем примере Если мы подключили f1.cpp в загловке а в этом файле есть реализация то не должно быть линкуемого объекта f1.o так как его тело уже будет находится в main.o и Если реализация функции не видна должен быть объектник в котором она будет находится либо подключаемая библиотека в которой так же находится реализация функции. |
||||||||
|
|||||||||
| americanets |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1100 Регистрация: 27.9.2006 Репутация: нет Всего: 12 |
system, спасибо, + 1
-------------------- Пусть популярную музыку слушают те, среди кого она популярна |
|||
|
||||
| americanets |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1100 Регистрация: 27.9.2006 Репутация: нет Всего: 12 |
компилирует всем спасибо -------------------- Пусть популярную музыку слушают те, среди кого она популярна |
|||
|
||||
![]()
|
| Правила форума "C/C++: Для новичков" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Для новичков | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |