Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > .NET для новичков > Отдельные модули для приложения


Автор: gambit 9.9.2008, 11:30
День добрый. Расскажите пож. новичку как работать с внешними модулями. Мне надо создать что то типа как было раньше dll.
Т.е. некий файл в котором скомпилированы функции, и любой желающий может обращатся к ним.
Расскажите (если можно поподробнее) обо всех этих процессах
1. Создание библиотеки
2. куда ее потом поместить (в папку с приложением или в какую другую)
3. как подключатся к этим функциям?? (писать что есть нений файл и в нем должна быть вот такая функция, или он на этапе разработки подключается (если так то можноли это обойти))

В книгах по этому поводу написано очень мало.  smile 

Автор: Veitmen 9.9.2008, 12:37
Создаешь солюшен. Добавляешь проект типа ClassLibrary. Пишешь нужные тебе типы. Компилишь. В папке bin твоего проекта будет лежать DLLка. Если тебе надо использовать эту DLLку просто при написании других программ или других сборок, то добавляешь ее в Reference проекта(правой кнопкой на проекте, AddReference). И не забудь в юните прописать using + namespace твоих типов.

Автор: Exai1e 9.9.2008, 15:18
Veitmen, а к этой библиотеке нельзя уже будет обращатся из Delphi к примеру или C++ ? Просто имхо - это получается вроде как не совсем dll'ка =)

Автор: source777 9.9.2008, 17:16
Цитата(Exai1e @  9.9.2008,  15:18 Найти цитируемый пост)
Просто имхо - это получается вроде как не совсем dll'ка
dll'ка - это файл с расширением dll  smile, а внутри конечно сборка.

Цитата(Exai1e @  9.9.2008,  15:18 Найти цитируемый пост)
а к этой библиотеке нельзя уже будет обращатся из Delphi к примеру или C++ ?
Можно, можно... Delphi.NET & C++/CLI в руки и вперёд!

Автор: Miller_time 9.9.2008, 18:14
А разве, нету разделния на чем скомплированна библиотека одно дело если на framework , другое если на Delphi без frameworka ? Потомучто вроде как к старым библиотекам мы обращаемся через 

Код

 [DllImport("winmm.dll", CharSet = CharSet.Auto)]

Автор: gambit 9.9.2008, 22:48
А если я хочу создать файл, описать какие функции внем есть и все. Т.е. чтоб она не требовалась при разработке приложения

Автор: Veitmen 10.9.2008, 04:03
Цитата(Exai1e @  9.9.2008,  15:18 Найти цитируемый пост)
Veitmen, а к этой библиотеке нельзя уже будет обращатся из Delphi к примеру или C++ ? Просто имхо - это получается вроде как не совсем dll'ка =)

Если ты пишешь под .Net  то у тебя получается сборка с управляемым кодом. Т.е. при разработки приложения на .Net, на любом языке ты можешь ее использовать. Все потому что твоя сборка является управляемой, т.е. скомпилирована под IL язык, а фреймворк дальше будет ее компилить в машинный код, при использовании сборки. Читай мануалы по .Net.
Цитата(Miller_time @  9.9.2008,  18:14 Найти цитируемый пост)
А разве, нету разделния на чем скомплированна библиотека одно дело если на framework , другое если на Delphi без frameworka ? Потомучто вроде как к старым библиотекам мы обращаемся через 

Это если ты пишешь не управляемый код, т.е. не используешь .Net  и следовательно код сразу является машинным.
Цитата(gambit @  9.9.2008,  22:48 Найти цитируемый пост)
А если я хочу создать файл, описать какие функции внем есть и все. Т.е. чтоб она не требовалась при разработке приложения

Если ты хочешь что бы твоя сборка подключалась в рантейме, т.е. была бы плагином к твоему приложению, то здесь тебе надо смотреть на технологию создания плагинов. Погугли, там все очень просто. Используется рефлекшн для подключения сборки. Работает это так(это я примерно и в сжатом виде):
1. Создаешь сборку в которой есть типы реализующие какой то конкретный интерфейс.
2. Твоя программа ищет сборки в которых реализован этот интерфейс.
3. Получаешь экземпляр типа реализующего требуемый интерфейс.
4. Вызываешь функции которые определены в этом интерфейсе.
Короче гугли. 

Автор: gambit 10.9.2008, 07:59
Цитата(Veitmen @  10.9.2008,  04:03 Найти цитируемый пост)
Если ты хочешь что бы твоя сборка подключалась в рантейме, т.е. была бы плагином к твоему приложению, то здесь тебе надо смотреть на технологию создания плагинов. Погугли, там все очень просто. Используется рефлекшн для подключения сборки. Работает это так(это я примерно и в сжатом виде):
1. Создаешь сборку в которой есть типы реализующие какой то конкретный интерфейс.
2. Твоя программа ищет сборки в которых реализован этот интерфейс.
3. Получаешь экземпляр типа реализующего требуемый интерфейс.
4. Вызываешь функции которые определены в этом интерфейсе.
Короче гугли.  

За это спасибо посмотрю, хотя ничего информационного ты не принес.


Цитата(Veitmen @  10.9.2008,  04:03 Найти цитируемый пост)
Если ты пишешь под .Net  то у тебя получается сборка с управляемым кодом. Т.е. при разработки приложения на .Net, на любом языке ты можешь ее использовать. Все потому что твоя сборка является управляемой, т.е. скомпилирована под IL язык, а фреймворк дальше будет ее компилить в машинный код, при использовании сборки. Читай мануалы по .Net.

Цитата(Miller_time @  9.9.2008,  18:14 )
А разве, нету разделния на чем скомплированна библиотека одно дело если на framework , другое если на Delphi без frameworka ? Потомучто вроде как к старым библиотекам мы обращаемся через 


Это если ты пишешь не управляемый код, т.е. не используешь .Net  и следовательно код сразу является машинным.


А вот это ты к чему написал вообще не понятно. Это все знают, и вопрос вообще не про это.

Автор: Veitmen 10.9.2008, 09:07
Цитата(gambit @  10.9.2008,  07:59 Найти цитируемый пост)
А вот это ты к чему написал вообще не понятно. Это все знают, и вопрос вообще не про это.


Цитата(Exai1e @  9.9.2008,  15:18 Найти цитируемый пост)
Veitmen, а к этой библиотеке нельзя уже будет обращатся из Delphi к примеру или C++ ? Просто имхо - это получается вроде как не совсем dll'ка =)


Цитата(gambit @  10.9.2008,  07:59 Найти цитируемый пост)
За это спасибо посмотрю, хотя ничего информационного ты не принес.

Хм... Пожалуйста...

Автор: jonie 10.9.2008, 22:23
Цитата

За это спасибо посмотрю, хотя ничего информационного ты не принес.
фигасе.
было описано : 
.net <->.net (runtime & static)
.net <- unmanaged (static)

опишу .net -> unmanaged (runtime & static) :
если вам нужно вызывать из дельфи сборки .net, то делайте из них COM proxy сборки (tlbexp вам в помощь).


то что генерирует .net это совсем длл-ка. посмотрите на ее заголовки. что вы понимаете под "dll-кой" теперь никому непонятно вообще...

Автор: gambit 10.9.2008, 22:28
Цитата(jonie @  10.9.2008,  22:23 Найти цитируемый пост)
если вам нужно вызывать из дельфи

да кто вообще сказал про delphi???

Добавлено через 2 минуты и 44 секунды
Вопрос был в том:
Как написать dll библиотеку.
И как потом написать прогу чтоб прога обращалась к функциям из нее, но при этом она не нужна была бы при разработке этого приложения.

Добавлено через 3 минуты и 8 секунд
И это все в C#

Автор: Veitmen 11.9.2008, 07:04
Цитата(gambit @  10.9.2008,  22:28 Найти цитируемый пост)
Вопрос был в том:Как написать dll библиотеку.И как потом написать прогу чтоб прога обращалась к функциям из нее, но при этом она не нужна была бы при разработке этого приложения.

ВЫ просто не правильно описали задачу.  Что значит нужна dll но при этом она при разработке не нужна?? В следующий раз лучше формулируйте вашу мысль. 
Цитата(jonie @  10.9.2008,  22:23 Найти цитируемый пост)
 что вы понимаете под "dll-кой" теперь никому непонятно вообще...

+1 smile 

Автор: gambit 11.9.2008, 08:38
Цитата(Veitmen @  11.9.2008,  07:04 Найти цитируемый пост)
ВЫ просто не правильно описали задачу.  Что значит нужна dll но при этом она при разработке не нужна?? 


Мне иногда хочется матом ругатся!!! Что непонятного??? И кстати до вас 2 учасника поняли вопрос.

Автор: Veitmen 11.9.2008, 09:02
Цитата(gambit @  11.9.2008,  08:38 Найти цитируемый пост)
Мне иногда хочется матом ругатся!!! Что непонятного??? И кстати до вас 2 учасника поняли вопрос.

Хм, не нервничай. Они поняли этот вопрос:
Цитата(gambit @  9.9.2008,  11:30 Найти цитируемый пост)
День добрый. Расскажите пож. новичку как работать с внешними модулями. Мне надо создать что то типа как было раньше dll.Т.е. некий файл в котором скомпилированы функции, и любой желающий может обращатся к ним.Расскажите (если можно поподробнее) обо всех этих процессах1. Создание библиотеки2. куда ее потом поместить (в папку с приложением или в какую другую)3. как подключатся к этим функциям?? (писать что есть нений файл и в нем должна быть вот такая функция, или он на этапе разработки подключается (если так то можноли это обойти))В книгах по этому поводу написано очень мало.   


Автор: Dennnis 11.9.2008, 17:44
Создание dll-ки:
1) File->New Project->ClassLibrary - Создаешь новый проект
2) Project->Add Class - Добавляешь новый класс
3) Добавляешь необходимые методы и свойства в класс
4) Ctrl+Shift+B - Компилируешь библиотеку

Использование dll-ки:
1) File->New Project->Console Application или File->New Project->Windows Forms Application
2) File->Project->Add Reference ->вкладка Browse - Находишь свою dll-ку, OK
3) Используешь в проекте класс из dll-ки.

Автор: gambit 12.9.2008, 11:28
Dennnis, спасибо.

Автор: Veitmen 12.9.2008, 11:48
 smile 

Автор: source777 12.9.2008, 11:53
Цитата(Veitmen @ 12.9.2008,  11:48)
smile

+1

Автор: psn 12.9.2008, 12:07
 smile 

Автор: Skynin 12.9.2008, 15:00
Чтобы было видно отовсюду, в смысле языков - оформи свою dll в COM+ объект. И используют потом, как используют COM объекты.
Хотя это технология на шаг назад.

Автор: gambit 12.9.2008, 21:53
Решил описать то что хотел более подробно, но это уже другая тема.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)