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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 11, средняя оценка - 4.73
-MefistofeL-
21 / 19 / 1
Регистрация: 11.02.2009
Сообщений: 383
#1

.h и .cpp - C++

07.03.2011, 17:36. Просмотров 1441. Ответов 14
Метки нет (Все метки)

В общем написал небольшой шаблонный механизм, который собираюсь неоднократно юзать в будущем.
По файликам расфасовал его как надо, однако возникают проблемы при вызове. Выглядет она примерно так:

C++
1
2
3
4
5
6
//hw.h
 
#include <iostream>
using namespace std;
 
void hw (void);
C++
1
2
3
4
5
6
7
8
//hw.cpp
 
#include "hw.h"
 
void hw (void)
{
    cout<<"hello world\n"
}
C++
1
2
3
4
5
6
7
//runhw.cpp
#include "hw.h"
int main()
{
    hw();
    return 0;
}
результат таков:
$ g++ runhw.cpp

/tmp/ccajpyuy.o: In function `main':
runhw.cpp:(.text+0x7): undefined reference to `hw()'
collect2: ld returned 1 exit status

что не правильно?

ЗЫ. аналогичная хрень и с моим проектиком, но полный код копировать сюда - издевательство.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.03.2011, 17:36     .h и .cpp
Посмотрите здесь:

Разделение на h и cpp - C++
На форуме есть темы с таким же названием, но тамошние приемы мне что-то не помогают. Жил был файл InfotrigsList.h, в нем был класс...

Разделение на .cpp и .h - C++
Здравствуйте! Прошу прощения за повтор, честно смотрела другие похожие, но все равно не разобралась. Нужно разделить программу на •...

Файлы .cpp и .h - C++
Добрый день! Подскажите, пожалуйста, как в программу добавить файлы .cpp и .h? Эти файлы уже написаны и их осталось только подключить к...

.h и .cpp файлы - C++
Если я объявляю в одном .h файле 3 класса, то могу ли я сделать полное определение методов для 3 классов в одном .cpp файле?

rand() cpp - C++
1. Тут недавно мне пришлось вспомнить как работать с rand() в С++. Ну сложности не было, конечно, нужно было случайное число на неком...

Очереди Cpp - C++
привет всем, помогите реализовать программку на С++ Смоделировать очередь(на базе статического массива), в которой реализован такой...

Из .exe в .cpp - C++
Добрый день. У меня есть программка(написанная на С++) с расширением .exe . Есть ли какая то возможность получить .cpp код этой...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
igorrr37
1643 / 1271 / 133
Регистрация: 21.12.2010
Сообщений: 1,932
Записей в блоге: 7
07.03.2011, 19:20     .h и .cpp #2
сделайте из hw.cpp статическую библиотеку и подключите к проекту. Но так тоже будет работать
C++
1
2
3
4
5
6
7
//runhw.cpp
#include"hw.cpp"
 
int main(){
    hw();
    return 0;
}
C++
1
2
3
4
5
//hw.h
#include <iostream>
using namespace std;
 
void hw (void);
C++
1
2
3
4
5
6
//hw.cpp
#include "hw.h"
 
void hw (void){
    cout<<"hello world\n";
}
-MefistofeL-
21 / 19 / 1
Регистрация: 11.02.2009
Сообщений: 383
07.03.2011, 20:07  [ТС]     .h и .cpp #3
нет... мне как раз нужна статическая библиотека, чтобы ее в будущем подключать к моим проектам через заголовочный файл.
можете подсказать пару манулов, как это сделать через g++ или qtcreator?

Добавлено через 3 минуты
З.Ы. меня одно смущает: каким образом в таком случае у меня работает эта хрень, когда я таким образом класс расписываю в двух файлах и подключаю только заголовочный файл. (Так у меня и в qt и в студии работало, однако не уверен о g++ в консоли )

Добавлено через 18 минут
Можете подсказать? Скажем stdio подключается воттак:
C++
1
#include <stdio.h>
в stdio.h нет ни единого описания функции, одни только объявления... это тоже статическая библиотека?
igorrr37
1643 / 1271 / 133
Регистрация: 21.12.2010
Сообщений: 1,932
Записей в блоге: 7
07.03.2011, 20:17     .h и .cpp #4
Цитата Сообщение от -MefistofeL- Посмотреть сообщение
мне как раз нужна статическая библиотека, чтобы ее в будущем подключать к моим проектам через заголовочный файл.
можете подсказать пару манулов, как это сделать через g++
делаете такой .bat файл:
g++ -c hw.cpp
ar -r hw.a hw.o
и запускаете. На выходе получите статическую либу hw.a
вот здесь всё написано: GCC._Полное_руководство_(Гриффитс)(2004)
-MefistofeL-
21 / 19 / 1
Регистрация: 11.02.2009
Сообщений: 383
07.03.2011, 20:20  [ТС]     .h и .cpp #5
я уже прочитал, как собирать статическую библиотеку...
но я не уверен точно ли мне именно это нужно? std - это ведь статическая библиотека?
nxnx
Формучанин
362 / 293 / 16
Регистрация: 02.11.2010
Сообщений: 1,234
07.03.2011, 20:25     .h и .cpp #6
для начало определись что тебе нужно? библиотека или модуль.
Если модуль то инклудить нужно
C
1
.cpp файл
(согласно листингу твоему)
igorrr37
1643 / 1271 / 133
Регистрация: 21.12.2010
Сообщений: 1,932
Записей в блоге: 7
07.03.2011, 20:28     .h и .cpp #7
Цитата Сообщение от -MefistofeL- Посмотреть сообщение
меня одно смущает: каким образом в таком случае у меня работает эта хрень, когда я таким образом класс расписываю в двух файлах и подключаю только заголовочный файл. (Так у меня и в qt и в студии работало, однако не уверен о g++ в консоли )
согласен. нужно передавать g++ оба .cpp файла:
g++ runhw.cpp hw.cpp -o runhw.exe
-MefistofeL-
21 / 19 / 1
Регистрация: 11.02.2009
Сообщений: 383
07.03.2011, 20:38  [ТС]     .h и .cpp #8
в общем мне нужно замутить такую же хрень, как и std: так чтобы подключался только заголовочный файл, в котором лежат только объявления. Как это сделать??

Добавлено через 4 минуты
Цитата Сообщение от igorrr37 Посмотреть сообщение
согласен. нужно передавать g++ оба .cpp файла:
g++ runhw.cpp hw.cpp -o runhw.exe
да это помогло. но мне нужно сделать так чтобы в будущем мне достаточно было компилить только один файл
lemegeton
2923 / 1352 / 135
Регистрация: 29.11.2010
Сообщений: 2,725
08.03.2011, 00:04     .h и .cpp #9
Компилировать придется все изменившиеся файлы. С крупными проектами помогут make / cmake.
-MefistofeL-
21 / 19 / 1
Регистрация: 11.02.2009
Сообщений: 383
08.03.2011, 01:46  [ТС]     .h и .cpp #10
может мне кто-нибудь все-таки ответить на мой вопрос?

мне нужно замутить такую же хрень, как и std: так чтобы подключался только заголовочный файл, в котором лежат только объявления. Как это сделать??
alex_x_x
бжни
2447 / 1652 / 84
Регистрация: 14.05.2009
Сообщений: 7,162
08.03.2011, 02:02     .h и .cpp #11
-MefistofeL-, там используется либо прилинкованная статическая библиотека, либо все на шаблонах, поэтому реализация и описание не разделяют
вообщем это не тот путь
lemegeton
2923 / 1352 / 135
Регистрация: 29.11.2010
Сообщений: 2,725
08.03.2011, 13:22     .h и .cpp #12
Цитата Сообщение от -MefistofeL- Посмотреть сообщение
мне нужно замутить такую же хрень, как и std: так чтобы подключался только заголовочный файл, в котором лежат только объявления. Как это сделать??
Никак. Если подключать с помощью #include только объявления, не линкуя с описаниями, то никак. Если в объявлении есть и описание, то все путем.

При компиляции с std объектами либо эти объекты являются шаблонами, которые не могут быть простым образом разделены на описание и определения, либо к экзешнику линкуется библиотека с кодом этих функций.
libstdc++.so.6 => /usr/lib/libstdc++.so.6 (0x00e35000)

Короче, такую "хрень" не "замутить". Надо линковать или пихать описание к объявлению.
-MefistofeL-
21 / 19 / 1
Регистрация: 11.02.2009
Сообщений: 383
08.03.2011, 15:31  [ТС]     .h и .cpp #13
lemegeton, то есть мне в любом случае надо будет компилить два цппшника?
alex_x_x
бжни
2447 / 1652 / 84
Регистрация: 14.05.2009
Сообщений: 7,162
08.03.2011, 15:34     .h и .cpp #14
-MefistofeL-, в проектах компилятся сотни и тысячи cpp, так что переживете
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.03.2011, 16:03     .h и .cpp
Еще ссылки по теме:

Не компилится *.cpp - C++
Создал заголовочный файл *.h , он описывает интерфейс класса. Создал файл исходного кода *.срр , он описывает реализацию класса. Так вот,...

template .h .cpp - C++
Здраствуйте! Возник вопрос по поводу шаблонов. В книге лафоре написана очередь Queue с использованием шаблонов, и там всё раздельно...

Файлы .h и .cpp - C++
Мне надо подключить несколько файлов к проекту. Какие надо использовать .h или .cpp ? И вообще какая между ними разница???

Python to cpp - C++
# РОЗДІЛ 2 # Комплект ЦН-1 # 15. Обчислити значення суми k = int(input(&quot;k =&gt; &quot;)) l = int(input(&quot;l =&gt; &quot;)) # генеруємо...

IDE for Cpp - C++
Вобщем, чем больше я искал и вникал в тему тем больше разочаровывался. Одна IDE бесплатная, но для неё надо купить компилятор, Вторая...


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

Или воспользуйтесь поиском по форуму:
-MefistofeL-
21 / 19 / 1
Регистрация: 11.02.2009
Сообщений: 383
08.03.2011, 16:03  [ТС]     .h и .cpp #15
alex_x_x, ну это не страшно)) спасибо))
Yandex
Объявления
08.03.2011, 16:03     .h и .cpp
Ответ Создать тему
Опции темы

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