![]() |
Модераторы: Partizan, gambit |
![]() ![]() ![]() |
|
gambit |
|
|||
![]() Эксперт ![]() ![]() ![]() Награды: 1 Профиль Группа: Комодератор Сообщений: 1359 Регистрация: 25.6.2006 Где: я? Репутация: 3 Всего: 40 |
День добрый. Расскажите пож. новичку как работать с внешними модулями. Мне надо создать что то типа как было раньше dll.
Т.е. некий файл в котором скомпилированы функции, и любой желающий может обращатся к ним. Расскажите (если можно поподробнее) обо всех этих процессах 1. Создание библиотеки 2. куда ее потом поместить (в папку с приложением или в какую другую) 3. как подключатся к этим функциям?? (писать что есть нений файл и в нем должна быть вот такая функция, или он на этапе разработки подключается (если так то можноли это обойти)) В книгах по этому поводу написано очень мало. ![]() |
|||
|
||||
Veitmen |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 288 Регистрация: 10.11.2006 Где: СПБ Репутация: 1 Всего: 4 |
Создаешь солюшен. Добавляешь проект типа ClassLibrary. Пишешь нужные тебе типы. Компилишь. В папке bin твоего проекта будет лежать DLLка. Если тебе надо использовать эту DLLку просто при написании других программ или других сборок, то добавляешь ее в Reference проекта(правой кнопкой на проекте, AddReference). И не забудь в юните прописать using + namespace твоих типов.
|
|||
|
||||
Exai1e |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 908 Регистрация: 3.12.2006 Где: Moscow Репутация: 4 Всего: 30 |
Veitmen, а к этой библиотеке нельзя уже будет обращатся из Delphi к примеру или C++ ? Просто имхо - это получается вроде как не совсем dll'ка =)
-------------------- "Решение зависит от выбранного геморроя" © Snowy "у нас как в армии - либо работает, либо так и задумано" |
|||
|
||||
source777 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1878 Регистрация: 12.3.2007 Репутация: 3 Всего: 56 |
dll'ка - это файл с расширением dll
![]()
-------------------- Если бы программистам платили за то, чтобы убирать код из программы вместо того, чтобы добавлять его, программы были бы намного лучше © Николас Негропонте |
|||
|
||||
Miller_time |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 641 Регистрация: 8.9.2006 Где: Нижний Новгород Репутация: нет Всего: 1 |
А разве, нету разделния на чем скомплированна библиотека одно дело если на framework , другое если на Delphi без frameworka ? Потомучто вроде как к старым библиотекам мы обращаемся через
|
|||
|
||||
gambit |
|
|||
![]() Эксперт ![]() ![]() ![]() Награды: 1 Профиль Группа: Комодератор Сообщений: 1359 Регистрация: 25.6.2006 Где: я? Репутация: 3 Всего: 40 |
А если я хочу создать файл, описать какие функции внем есть и все. Т.е. чтоб она не требовалась при разработке приложения
|
|||
|
||||
Veitmen |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 288 Регистрация: 10.11.2006 Где: СПБ Репутация: 1 Всего: 4 |
Если ты пишешь под .Net то у тебя получается сборка с управляемым кодом. Т.е. при разработки приложения на .Net, на любом языке ты можешь ее использовать. Все потому что твоя сборка является управляемой, т.е. скомпилирована под IL язык, а фреймворк дальше будет ее компилить в машинный код, при использовании сборки. Читай мануалы по .Net. Это если ты пишешь не управляемый код, т.е. не используешь .Net и следовательно код сразу является машинным.
Если ты хочешь что бы твоя сборка подключалась в рантейме, т.е. была бы плагином к твоему приложению, то здесь тебе надо смотреть на технологию создания плагинов. Погугли, там все очень просто. Используется рефлекшн для подключения сборки. Работает это так(это я примерно и в сжатом виде): 1. Создаешь сборку в которой есть типы реализующие какой то конкретный интерфейс. 2. Твоя программа ищет сборки в которых реализован этот интерфейс. 3. Получаешь экземпляр типа реализующего требуемый интерфейс. 4. Вызываешь функции которые определены в этом интерфейсе. Короче гугли. |
||||
|
|||||
gambit |
|
|||
![]() Эксперт ![]() ![]() ![]() Награды: 1 Профиль Группа: Комодератор Сообщений: 1359 Регистрация: 25.6.2006 Где: я? Репутация: 3 Всего: 40 |
За это спасибо посмотрю, хотя ничего информационного ты не принес. А вот это ты к чему написал вообще не понятно. Это все знают, и вопрос вообще не про это. |
|||
|
||||
Veitmen |
|
||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 288 Регистрация: 10.11.2006 Где: СПБ Репутация: 1 Всего: 4 |
Хм... Пожалуйста... |
||||||
|
|||||||
jonie |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5613 Регистрация: 21.8.2005 Где: Владимир Репутация: 6 Всего: 118 |
было описано : .net <->.net (runtime & static) .net <- unmanaged (static) опишу .net -> unmanaged (runtime & static) : если вам нужно вызывать из дельфи сборки .net, то делайте из них COM proxy сборки (tlbexp вам в помощь). то что генерирует .net это совсем длл-ка. посмотрите на ее заголовки. что вы понимаете под "dll-кой" теперь никому непонятно вообще... -------------------- Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет... |
|||
|
||||
gambit |
|
|||
![]() Эксперт ![]() ![]() ![]() Награды: 1 Профиль Группа: Комодератор Сообщений: 1359 Регистрация: 25.6.2006 Где: я? Репутация: 3 Всего: 40 |
да кто вообще сказал про delphi??? Добавлено через 2 минуты и 44 секунды Вопрос был в том: Как написать dll библиотеку. И как потом написать прогу чтоб прога обращалась к функциям из нее, но при этом она не нужна была бы при разработке этого приложения. Добавлено через 3 минуты и 8 секунд И это все в C# |
|||
|
||||
Veitmen |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 288 Регистрация: 10.11.2006 Где: СПБ Репутация: 1 Всего: 4 |
ВЫ просто не правильно описали задачу. Что значит нужна dll но при этом она при разработке не нужна?? В следующий раз лучше формулируйте вашу мысль. +1 ![]() |
|||
|
||||
gambit |
|
|||
![]() Эксперт ![]() ![]() ![]() Награды: 1 Профиль Группа: Комодератор Сообщений: 1359 Регистрация: 25.6.2006 Где: я? Репутация: 3 Всего: 40 |
||||
|
||||
Veitmen |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 288 Регистрация: 10.11.2006 Где: СПБ Репутация: 1 Всего: 4 |
Хм, не нервничай. Они поняли этот вопрос: |
|||
|
||||
Dennnis |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 145 Регистрация: 23.3.2008 Репутация: 1 Всего: 4 |
Создание 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-ки. Это сообщение отредактировал(а) Dennnis - 11.9.2008, 17:46 --------------------
Get Rich or Die Tryin' |
|||
|
||||
![]() ![]() ![]() |
Прежде чем создать тему, посмотрите сюда: | |
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :) Так же не забывайте отмечать свой вопрос решенным, если он таковым является :) Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, Partizan, PashaPash. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | .NET для новичков | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |