Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 08.07.2013, 12:44   #1
Voipp
Пользователь
 
Регистрация: 03.08.2009
Сообщений: 32
По умолчанию подключение dll

правильно ли, что dll на C# состоит из IL инструкций? Как происходит дальнейшая работа программы, в которую подключается dll ? CLR скопирует код используемых классов этой библиотеки в исходную мою сборку ?
PS не бейте меня бамбуковыми палками, я знаю C++ и хочу понять работу компилятора\рантайм-машины в C# )
Voipp вне форума Ответить с цитированием
Старый 08.07.2013, 15:33   #2
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Цитата:
правильно ли, что dll на C# состоит из IL инструкций?
в общем то да.
Цитата:
Как происходит дальнейшая работа программы, в которую подключается dll ? CLR скопирует код используемых классов этой библиотеки в исходную мою сборку ?
не в сборку, а при выполнению в память, и сомневаюсь что именно классы, скорее всего грузит все, а вот JIT будет уже при необходимости отрабатывать.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 08.07.2013, 17:23   #3
Selestis
Форумчанин
 
Аватар для Selestis
 
Регистрация: 21.01.2009
Сообщений: 719
По умолчанию

Насчет того, куда грузится сборка: в т.н. AppDomain, текущий для того потока, который загрузил сборку. В простейшем случае этот домен один. Это происходит уже в рантайме, т.е. физически ваше приложение не меняется (там просто "сказано", что такие-то типы из такой-то сборки). Когда в вашей программе будет нужен какой-то класс из DLL, произойдет загрузка её типов, и их можно будет использовать. Фишка в том, что загруженную таким стандартным способом DLL нельзя выгрузить - сборка выгружается только при выгрузке её домена.
Ради эксперимента можете поиграться с reflection, чтобы понять как всё работает.

p.s.
Есть ещё пара любопытных вещей на тему:
NGen - позволяет генерить native сборку из managed - и прощай IL
ILMerge - тулза, позволяющая объединять несколько сборок в одну
Изобретатель велосипедов

Последний раз редактировалось Selestis; 08.07.2013 в 17:26.
Selestis вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Подключение DLL на С++ mrbadge Общие вопросы Delphi 1 03.10.2012 23:13
подключение DLL Lui C# (си шарп) 5 14.01.2012 13:05
Подключение DLL Ninetta Общие вопросы .NET 3 01.04.2010 01:06
Подключение DLL __Demon__ C++ Builder 2 09.12.2009 00:29
Подключение DLL 5naip Помощь студентам 9 27.10.2007 20:55