Dll - избитая тема
От: Shkval Россия  
Дата: 09.08.04 08:03
Оценка:
Всем доброго времени суток.

Я только начиная изучать C#. Меня интересует вопрос использования файлов dll в программах, написанных на dll. Я посмотрел поиск на эту тему сообщений на форуме; результат поиска — более сотни сообщений, но каждый раз поднимается какая-то конкретная проблема, и новичку не совсем понятно очем идет речь. Если не трудно можете дать ссылки на какие-нибудь документы на этом сайте или в сети, где всесторонне обсуждался бы этот вопрос (на этом сайте я просматривал статью "Использование DLL в программе на Visual C++" Александра Шаргина — но там речь идет о VC++).

Заранее спасибо.
Re: Dll - избитая тема
От: Alex_13  
Дата: 09.08.04 08:44
Оценка:
Здравствуйте, Shkval, Вы писали:

S>Всем доброго времени суток.


Ну все просто, и обсуждать всесторонне нечего...
Делаешь новый проект на C#, тип проекта — Class Library, пишешь в нем свой класс(классы). Потом делаешь новый проект, приложение с формами например, подключаешь свою библиотеку. Создаешь объекты классов из своей библиотеки, вызываешь их методы, и радуешься как все работает.
Re[2]: Dll - избитая тема
От: Andrbig  
Дата: 09.08.04 09:19
Оценка:
Здравствуйте, Alex_13, Вы писали:

A_>Ну все просто, и обсуждать всесторонне нечего...

A_>Делаешь новый проект на C#, тип проекта — Class Library, пишешь в нем свой класс(классы). Потом делаешь новый проект, приложение с формами например, подключаешь свою библиотеку. Создаешь объекты классов из своей библиотеки, вызываешь их методы, и радуешься как все работает.

Более того, твой код может быть на C#, библиотека — на VB.NET или наоброт. И все создается, и все работает, и проблем с памятью никаких. Смотришь и радуешься, как работает.
Re[2]: Dll - избитая тема
От: Shkval Россия  
Дата: 09.08.04 14:19
Оценка:
Здравствуйте, Alex_13, Вы писали:

A_>Здравствуйте, Shkval, Вы писали:


S>>Всем доброго времени суток.


A_>Ну все просто, и обсуждать всесторонне нечего...

A_>Делаешь новый проект на C#, тип проекта — Class Library, пишешь в нем свой класс(классы). Потом делаешь новый проект, приложение с формами например, подключаешь свою библиотеку. Создаешь объекты классов из своей библиотеки, вызываешь их методы, и радуешься как все работает.

Действительно, когда в этом хорошо разбираешься, то такая простота — это большой плюс, но мне хотелось бы понять, что там внутри происходит. При этом в постах из этого форума часто упоминаются managed и unmanaged dll библиотеки (я примерно так понимаю, что unmanaged — это те которые были раньше, а managed — те которые создаются специально под .Net) — хотелось бы подробнее разобраться.

А вообще прикладная проблема, которая сейчас передо мной стоит — это динамическая загрузка dll из приложения. Т.е. в dll библиотеках хранятся, предположим, разные формы кисточек для программы графического редактора. При этом пользователь в праве настроить набор кистей, которые он хочет использовать, самостоятельно. Он во время исполнения указывает, какие кисти ему нравятся — а я загружаю только те библиотеки, которые для этого требуются. При этом путь к этим библиотекам не статичен (т.е. нельзя сделать reference на них) — продвинутый пользователь может сам указать путь к соответствующей dll во время исполнения программы.
Re[3]: Dll - избитая тема
От: Andrbig  
Дата: 09.08.04 14:34
Оценка:
Здравствуйте, Shkval, Вы писали:

S>Действительно, когда в этом хорошо разбираешься, то такая простота — это большой плюс, но мне хотелось бы понять, что там внутри происходит. При этом в постах из этого форума часто упоминаются managed и unmanaged dll библиотеки (я примерно так понимаю, что unmanaged — это те которые были раньше, а managed — те которые создаются специально под .Net)


Именно так.

S>хотелось бы подробнее разобраться.


С чем именно? С загрузкой которых библиотек?

S>А вообще прикладная проблема, которая сейчас передо мной стоит — это динамическая загрузка dll из приложения. Т.е. в dll библиотеках хранятся, предположим, разные формы кисточек для программы графического редактора. При этом пользователь в праве настроить набор кистей, которые он хочет использовать, самостоятельно. Он во время исполнения указывает, какие кисти ему нравятся — а я загружаю только те библиотеки, которые для этого требуются. При этом путь к этим библиотекам не статичен (т.е. нельзя сделать reference на них) — продвинутый пользователь может сам указать путь к соответствующей dll во время исполнения программы.


Ну для начала возьми ass = Assembly.LoadFrom. Так грузятся NET библиотеки, а ты получаешь ссылку на нее — это ass. Дальше ass.CreateInstance — получаешь объект. Дальнейшие пути зависят от того, полученные классы порождены от кого-то одного или они сделаны как попало.

А если ты вздумал грузить и работать с non-managed библиотекой, которая тебе возвращает какой-то свой non-managed объект, то серый волк тебе товарищ. Я этим не занимался и никому не посоветую. Максимум — вызвать кого-нить из user32.dll или kernel32.dll.
Re[4]: Dll - избитая тема
От: Mab Россия http://shade.msu.ru/~mab
Дата: 09.08.04 18:19
Оценка: :)
A>Так грузятся NET библиотеки, а ты получаешь ссылку на нее — это ass.
Ну насчет последнего я бы не был так категоричен... Можно и по-другому назвать.
Re[5]: Dll - избитая тема
От: Andrbig  
Дата: 10.08.04 06:40
Оценка:
Здравствуйте, Mab, Вы писали:

A>>Так грузятся NET библиотеки, а ты получаешь ссылку на нее — это ass.

Mab>Ну насчет последнего я бы не был так категоричен... Можно и по-другому назвать.
Re[4]: Dll - избитая тема
От: SiAVoL Россия  
Дата: 10.08.04 06:55
Оценка:
Здравствуйте, Andrbig, Вы писали:

A>А если ты вздумал грузить и работать с non-managed библиотекой, которая тебе возвращает какой-то свой non-managed объект, то серый волк тебе товарищ.

неправда ваша, RSDN ему товарищ
A>Я этим не занимался и никому не посоветую. Максимум — вызвать кого-нить из user32.dll или kernel32.dll.
ничего там особо страшного нет...
Взаимодействие с DLL
Автор(ы): Алексей Дубовцев
Дата: 22.10.2001
... << RSDN@Home 1.1.4 beta 2 >>
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.