![]() |
Модераторы: bsa |
![]() ![]() ![]() |
|
metoflex |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 126 Регистрация: 18.4.2010 Репутация: нет Всего: нет |
Здравствуйте Уважаемые форумчане!
Часто юзаю *.dll, но никогда не задавался вопросом, что же внутри по факту. Т.е. я всегда знал что там набор готовых функций, которые и юзал, но вот вопрос от коллеги, а что и как там внутри расположено - меня поставил в тупик. Адекватной информации в инете, с отсылкой на источник, увы найти не удалось, потому поднимаю пост здесь. Больше всего интересно как создается сама библиотека, т.е. порядок и формат записи данных в данный файл, согласно которому компилятор парсит *.dll и находит тело нужной функции? P.S. Интуитивно я бы сказал что внутри *.dll располагается в начале некоторое перечисление всего набора функций, с указанием имени, аргументов и возвращаемого значения, а также имеется указатель на строку в этом файле (*.dll), который указывает компилятору, что мол ты возьми и вот эти аргументы прогони по вот нижеследующему куску кода, от сих и до сих (вероятнее всего данный кусок кода записан в каком-то своем формате в файл). Заранее весьма вам благодарен! |
|||
|
||||
borisbn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4875 Регистрация: 6.2.2010 Где: Ростов-на-Дону Репутация: 21 Всего: 135 |
Начал хорошо ![]() но дальше немного неправильно не на строку, а смещение, относительно начала данных в файле. компилятор переводит код с языка программирования в коды, которые исполняет процессор. Кстати, в .dll как раз и хранятся эти самые коды. На этапе же выполнения твоей программы (.exe) она загружает dll-ку в память, допустим, по адресу 1000. Теперь, допустим, твоя программа хочет вызвать функцию foo, расположенную в dll-ке. Программа вычитывает из заголовка dll-ки смещение для функции foo - допустим, оно равно 146 - и делает переход (call) по адресу 1146. -------------------- Женщины отличаются от программистов тем, что у них чары состоят из стрингов |
|||
|
||||
bems |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3400 Регистрация: 5.1.2006 Репутация: нет Всего: 88 |
http://msdn.microsoft.com/en-us/library/wi...e/gg463119.aspx -------------------- Обижено школьников: 8 |
|||
|
||||
xvr |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 35 Всего: 223 |
Для начального ознакомления с DLL это как бы перебор ![]() |
|||
|
||||
metoflex |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 126 Регистрация: 18.4.2010 Репутация: нет Всего: нет |
Всем спасибо за помощь!
![]() |
|||
|
||||
![]() ![]() ![]() |
Правила форума "C/C++: Для новичков" | |
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Для новичков | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |