Модераторы: Daevaorn

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Создание своей библиотеки функций в .h и .cpp 
:(
    Опции темы
maxim1000
Дата 22.7.2003, 10:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 3334
Регистрация: 11.1.2003
Где: Киев

Репутация: 17
Всего: 110



Цитата
в этом случае функции было бы удобно разбросать по тематическим файлам но представьте какое удовольствие потом подключать все cpp файлы при помощи менеджера проекта ... бррр...

в этом случае можно их всех собрать в один *.lib и подключать только его
не знаю, как в Builder, а в VC я делаю проект library типа Win32 Static Library, в него включаю кучу файлов *.cpp, компилирую его один раз, а полученный *.lib файл добавляю в те проекты, где он нужен


--------------------
qqq
PM WWW   Вверх
HexoGenus
Дата 22.7.2003, 11:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Экс. модератор
Сообщений: 110
Регистрация: 28.8.2002
Где: Ростов-на-Дону

Репутация: нет
Всего: нет



Цитата
Теперь включай h - файл куда угодно, сколько угодно.


Хммм... только перед тем как включать нужно зайти 100 раз в менеджер проектов и добавить 100 cpp файлов и так в каждом новом проекте... это что я программист или оператор машинного доенияconfused.gif неужели нет способа подключать cpp файлы в виде одного списка?

сейчас пытаюсь заставить билдер воспринимать команду USEUNIT но он почему-то не дает использовать ее в подключаемом файле (кажется она не признает вложений) можно конечно держать список из
USEUNIT ("name1.cpp");
USEUNIT ("name2.cpp");
USEUNIT ("name3.cpp");
в отдельном файле а потом копировать в каждый проект, но это все равно не красиво sad.gif

есть вариант
copy *.cpp myfunct.cpp
и потом подключать этот файл...
но тоже коряво...

не подумайте что я такой уж привиреда, я очень благодарен за то что вы откликнулись, остальные вообще молчат, или им тема кажется слишком простой, или подводные камни оказались даже крепче чем я думал...
неужели тут большинство пишет каждую программу с нуля и совсем не пробует создавать свои универсальные классы и функции?

--------------------
Когда невозможно уже работать напряженнее, начни работать умнее.
PM MAIL WWW ICQ   Вверх
maxim1000
Дата 22.7.2003, 12:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 3334
Регистрация: 11.1.2003
Где: Киев

Репутация: 17
Всего: 110



Цитата
нет способа подключать cpp файлы в виде одного списка?

Цитата
в этом случае можно их всех собрать в один *.lib и подключать только его



--------------------
qqq
PM WWW   Вверх
DENNN
Дата 22.7.2003, 12:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 3878
Регистрация: 27.3.2002
Где: Москва

Репутация: 1
Всего: 43



Долго еще будете велосипед изобретать?
PM ICQ   Вверх
HexoGenus
Дата 22.7.2003, 13:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Экс. модератор
Сообщений: 110
Регистрация: 28.8.2002
Где: Ростов-на-Дону

Репутация: нет
Всего: нет



maxim1000 Извини smile.gif я твое сообщение не видел потому что в это время еще писал свое smile.gif спасибо попробую разобраться...

DENNN не знаю почему это для тебя является велосипедом, может ты lib файлы каждый день используешь а я про них что то слышал но даже не знал зачем нужны, теперь понял и буду разбираться smile.gif Если такие "простые" вопросы кого-то оскорбляют выделите детскую комнату форума где можно их задавать, но неужели в моем вопросе было что-то очень простое? У меня вообще-то как раз сложилось впечатление что никто не может найти решения и поэтому многие из тех кто программирует в билдере выкручиваются далеко не изящными способами... Мне кажется что богаж знаний программиста складывается из 3 чемоданов:
1. Знания в голове
2. Сборники документации
3. Свои библиотеки функций

Некоторые эти библиотеки функций хранят в виде исходников созданных программ, другие ведут что-то вроде электронного справочника, но ведь это неправильно... Зачем десятки раз перебирать одно и то же, искать, копировать, подключать cpp файлы по одному заботясь что бы не пропустить ни одного...
Неужели меня так сложно понять DENNN ?
Если это и велосипед, то он спрятан, а мы ходим пешком...

maxim1000 еще раз спасибо!

Это сообщение отредактировал(а) HexoGenus - 22.7.2003, 14:07
--------------------
Когда невозможно уже работать напряженнее, начни работать умнее.
PM MAIL WWW ICQ   Вверх
DENNN
Дата 22.7.2003, 14:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 3878
Регистрация: 27.3.2002
Где: Москва

Репутация: 1
Всего: 43



Просто в любом классическом справочнике говориться, что в заголовочном файле хранятся объявления функций , а в cpp их реализация. Это первое с чего у нас пошел спор. А детская комната я думаю не нужна smile.gif
PM ICQ   Вверх
HexoGenus
Дата 22.7.2003, 15:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Экс. модератор
Сообщений: 110
Регистрация: 28.8.2002
Где: Ростов-на-Дону

Репутация: нет
Всего: нет



Вот меня как раз и стесняет то что во всех классических книжках по билдеру хорошо расписывается как при помощи #include подключать описания функций в *.h файлах но нигде не говориться как подключать *.cpp файлы которые им соответствуют. А ведь если рассмотрим любой *.h файл то в нем куча подключений через include других *.h файлов.
Получается что, при подключении через include всего одного *.h файла нужно подключить целую кучу *.cpp файлов через менеджер проекта...
Так что все же надеюсь что пока я пытаюсь разобраться с lib файлами ктонибудь подскажет как грамотно подключать cpp файлы сразу большой кучей...
--------------------
Когда невозможно уже работать напряженнее, начни работать умнее.
PM MAIL WWW ICQ   Вверх
Vyacheslav
Дата 23.7.2003, 08:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 2124
Регистрация: 25.3.2002
Где: Москва

Репутация: 9
Всего: 59



Уже же все сказали. Используй библиотеки(статические или динамические). У Builder неплохой эквивалент: package. И надо понимать, что в С++ нет понятия проекта и говорить о включении cpp куда либо бесмысленно. Проект - это термин используемых сред разработки а не языка. Поэтому о включении cpp ничего и не говорится. Не так давно, чтобы собрать программу приходилось компилить каждый cpp отдельно командной строкой, а затем полученные файлы obj линковать в приложение.
Если так уж в лом, то при аккуратном оформленнии cpp попробуй использовать тот же include. Вставь в проект отдельный чистый cpp, в котором будут только include

#include "file1.cpp"
#include "file2.cpp"
#include "file3.cpp"
#include "file5.cpp"




--------------------
С уважением, Вячеслав Ермолаев
PM MAIL WWW ICQ   Вверх
DENNN
Дата 23.7.2003, 09:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 3878
Регистрация: 27.3.2002
Где: Москва

Репутация: 1
Всего: 43



Я не спец по билдеру, по этому скажу про VC после подключения h-файла производиться поиск сначала среди подключенных в проект файлах *.cpp, а если там такого файла нет, то просматриваються все каталоги указаные в свойствах среды разработки как каталоги с Source-файлами. Тоже самое происходит и при включении заголовочного файла, только опция будет не "Source files", а "Include Files".
По этому, копирпуешь свои cpp файлы в отдельную директорию, заголовочные файлы в отдельную, прописываешь пути (или можешь накидать все в кучу в одну из уже прописанных стнадартных) и все у тебя будет хорошо.

После этого можешь просто добавлять в файле строчку #include..... Не правдали так намного удобнее и главное вернее?
А велосипед изобретать не надо smile.gif


P.S. Тебя не удивляло, что вставка строки вида #include stdio.h не вызывает у компилятора шок? Ты же не думаешь что все стандартные библиотеки состоят только из заголовочных файлов?
PM ICQ   Вверх
RAN
Дата 23.7.2003, 11:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Экс. модератор
Сообщений: 709
Регистрация: 14.3.2003
Где: Щёлково Моск.обл.

Репутация: 5
Всего: 6



DENNN, нет, так не получится. В VC надо свой lib добавить в свойствах проекта, по-моему на вкладке Link перечислены kernel32.lib и т.п. Так вот в конце дописываешь свой и он добовляется в командную строку компановщика. Но мне кажется лучше lib включать в проект.
А в Buildere такого нет, там можно только подключить файл к проекту.
PM MAIL ICQ   Вверх
Vyacheslav
Дата 23.7.2003, 14:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 2124
Регистрация: 25.3.2002
Где: Москва

Репутация: 9
Всего: 59



Цитата(RAN @ 23.7.2003, 11:31)
А в Buildere такого нет, там можно только подключить файл к проекту.

Опять Builder обижают sad.gif . Поясни, чего там у него нет


--------------------
С уважением, Вячеслав Ермолаев
PM MAIL WWW ICQ   Вверх
RAN
Дата 23.7.2003, 14:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Экс. модератор
Сообщений: 709
Регистрация: 14.3.2003
Где: Щёлково Моск.обл.

Репутация: 5
Всего: 6



Я не обижаю Builder, я с ним не меньше Visual'a работаю. Это факт:
В VC можно изменять список стандартных lib файлов или вообще отключить и писать с нуля, только точка входа будет не main и не WinMain, а mainCRTStartup. Входишь в setting... проекта (Alt+F7) и там на странице Link в категории General есть EditBox "Object/Library modules" перечислены lib по-умолчанию, можешь редактировать и добавлять свои. А если там отметить Ignore all default libraries, то в проект не будут подключаться никакие lib и компанивщик не сможет найти даже mainCRTStartup, с которого начинается выполнение программы. А в Builder'e список стандартных библиотек не изменить.
PM MAIL ICQ   Вверх
Vyacheslav
Дата 23.7.2003, 15:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 2124
Регистрация: 25.3.2002
Где: Москва

Репутация: 9
Всего: 59



Мда !? biggrin.gif
В каталоге Bin открываем Notepad'ом файл с именем default.bpr и правим
Цитата

  <LINKER>
    <ALLOBJ value="c0w32.obj $(PACKAGES) Memmgr.Lib sysinit.obj $(OBJFILES)"/>
    <ALLRES value="$(RESFILES)"/>
    <ALLLIB value="$(LIBFILES) $(LIBRARIES) import32.lib cp32mti.lib gfgfgfg.lib"/>
    <OTHERFILES value=""/>
  </LINKER>


Потом создаем новый проект, транслируем и получаем smile.gif
Цитата

[Linker Fatal Error] Fatal: Unable to open file 'GFGFGFG.LIB'


Кстати для Builder6 правим секцию
Цитата

<FILELIST>
      <FILE FILENAME="%0:s.res" FORMNAME="" UNITNAME="" CONTAINERID="ResTool" DESIGNCLASS="" LOCALCOMMAND=""/>
      <FILE FILENAME="ULoginDialog.cpp" FORMNAME="LoginDialog" UNITNAME="ULoginDialog" CONTAINERID="CCompiler" DESIGNCLASS="" LOCALCOMMAND=""/>
</FILELIST>


и у нас при создании при создании проекта сразу подключается и *.cpp-файл


Я уж не говорю о возможности написания визардов для создания проектов.


--------------------
С уважением, Вячеслав Ермолаев
PM MAIL WWW ICQ   Вверх
HexoGenus
Дата 23.7.2003, 16:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Экс. модератор
Сообщений: 110
Регистрация: 28.8.2002
Где: Ростов-на-Дону

Репутация: нет
Всего: нет



DENNN уже пробовал sad.gif
и на всякий случай попробовал еще раз...
скопировал свои файлы почти во все папки билдера, в опциях билдера везде где только можно дописал к путям ;$(BCB)\include\my
в VС может и ищутся cpp файлы, а билдер обрабатывает только те что подключены к проекту...

Vyacheslav почитай внимательно то что писалось выше sad.gif
include будет работать только при подключении к одной форме если попробуешь использовать include на нескольких формах то этот способ не прокатит...
твой способ прописать cpp файлы радует тем что это можно сделать один раз для всех вновь создаваемых проектов... опробуем, поделимся впечатлениями smile.gif


--------------------
Когда невозможно уже работать напряженнее, начни работать умнее.
PM MAIL WWW ICQ   Вверх
RAN
Дата 23.7.2003, 22:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Экс. модератор
Сообщений: 709
Регистрация: 14.3.2003
Где: Щёлково Моск.обл.

Репутация: 5
Всего: 6



Vyacheslav, если так, то значит можно. Прошу прощения за свою неосведомлённость. smile.gif
HexoGenus, почитай повнимательней всё, что в этой теме писалось. По моему исчерповающее обсуждение. Тут есть масса вариантов.
И насчёт #include: я не говорил, что их нельзя на разные формы лепить, я сказал, что твой h-файл не верно составлен. Нельзя в нём функции реализовывать и переменные определять.

Это сообщение отредактировал(а) RAN - 23.7.2003, 22:33
PM MAIL ICQ   Вверх
Страницы: (3) Все 1 [2] 3 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0554 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.