![]() |
Модераторы: Poseidon, Snowy, bems, MetalFan |
![]() ![]() ![]() |
|
jenya7 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 6 Регистрация: 25.9.2007 Репутация: нет Всего: нет |
Вопрос такой - зачем нужен файл с расширением *.dcu
и в какой момент он появляеться в проекте. Заранее благодарен. |
|||
|
||||
Alix |
|
|||
![]() L45 ![]() ![]() Профиль Группа: Участник Сообщений: 581 Регистрация: 4.5.2005 Где: Pskov/Spb Репутация: 7 Всего: 23 |
DCU = Delphi Compiled Unit. т.е. это откомпилированный *.pas файл
-------------------- Знание только тогда знание, когда оно приобретено усилиями своей мысли, а не памятью (с) Л. Толстой High tech. Low live. (с) Gardner Dozois |
|||
|
||||
jenya7 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 6 Регистрация: 25.9.2007 Репутация: нет Всего: нет |
то есть если удалить *.pas из проекта он будет работать с *.dcu?
на каком этапе проект подключает *.dcu? Это сообщение отредактировал(а) jenya7 - 28.9.2007, 20:30 |
|||
|
||||
Alexeis |
|
|||
![]() Амеба ![]() Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 109 Всего: 459 |
Да для линковки и компиляции достаточно *.dcu, там есть вся необходимая информация кроме исходников самих функций. -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
BaD_SeCt0R |
|
|||
![]() Lazy Coder ![]() ![]() Профиль Группа: Участник Сообщений: 432 Регистрация: 9.10.2006 Где: Анапа Репутация: 4 Всего: 18 |
Если я не ошибаюсь, то он уже скомпилирован. Тут уж дело линкера... -------------------- Кто владеет информацией - владеет миром. (С) Френсис Бэкон. |
|||
|
||||
Alexeis |
|
|||
![]() Амеба ![]() Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 109 Всего: 459 |
BaD_SeCt0R, он то скомпилирован, но модули зависящие от него могут быть еще не скомпилированны, но dcu содержит всю необходимую информацию информацию о типах, параметрах и т.д. так что остальные модули компилируются так как будто это был бы pas файл.
Добавлено через 2 минуты и 4 секунды Другое дело в С++ там действительно OBJ файлы попадают только линкеру, но для них есть заголовочный файл без которого невозможно использовать этот OBJ, так как нет инфы о типах, тут же гибрид заголовочного файла С++ и OBJ файла для линковки, т.е. 2 в одном. -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
BaD_SeCt0R |
|
|||
![]() Lazy Coder ![]() ![]() Профиль Группа: Участник Сообщений: 432 Регистрация: 9.10.2006 Где: Анапа Репутация: 4 Всего: 18 |
Да. В Делфи нет понятия "хедера". -------------------- Кто владеет информацией - владеет миром. (С) Френсис Бэкон. |
|||
|
||||
jenya7 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 6 Регистрация: 25.9.2007 Репутация: нет Всего: нет |
Спасибо за объяснение, все понятно.
|
|||
|
||||
Rrader |
|
|||
Inspired =) ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 1535 Регистрация: 7.5.2005 Репутация: 70 Всего: 191 |
Отсюда вытекает второе очень важное назначение DCU: они ускоряют процесс компиляции |
|||
|
||||
Dragin |
|
|||
Новичок Профиль Группа: Участник Сообщений: 10 Регистрация: 29.9.2007 Репутация: нет Всего: нет |
DCU = Delphi Compiled Unit
Это прямое составляющее Object Pascal кода, *pas служит всего лишь для восприятия кода человеком, все *pas файлы переводятся в *dcu и они нужны лишь для просмотра кода. Короче говоря если выложить просто *dcu то ни кто не сможет смотреть исходник, если выложить *pas то исходник увидят переделают под сво и будут выдавать ха своё творение ![]() |
|||
|
||||
EvilsInterrupt |
|
|||
Executables research ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1019 Регистрация: 14.7.2007 Где: Железнодорожный, МО, Россия Репутация: 3 Всего: 9 |
Сказали проще, че мудрить то?
Есть стадии построения исполнимого файл, это: 1) Компиляция исходного кода и получения равнозначного кода но в машинных кодах, там указаны некоторые связи касательно этого модуля, для компоновщика. Вобщем результат этой стадии - получить объектый код в виде файла и он довольно часто называется "Объектным файлом". В MS Visual C++ 6.0 этими файлами являются файлы с расширением "*.obj", а в Delphi "*.dcu". 2) Компоновка, это когда есть много или один объетных файлов, и задача этой стадии используя связи в этих объектных файлах, получить исполнимый файл. Но что мне дают эти "*.dcu" ? Дают вот что: Любой программист может возжелать продать компонент, но чтобы он был без исходного кода! Вот! Вот оно! Вы дает объектые файлы "*.dcu", ваш клиент их подключает у себя и если версия совпадает, то он будет их на ура использовать. Потому что для стадии компоновки вся информация в "*.dcu" уже существует! Нерекомендую: Выносить защитные механизмы в pas-файлы ибо легко эти "*.dcu" реверсятся, в инэте даже есть исходник на дельфи, который позволяет распарсить "*.dcu" в код на ассемблере, что даст злоумышленнику крякнуть и нахаляву юзать ;) |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Delphi: Общие вопросы" | |
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |