Модераторы: Partizan, gambit

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Отдельные модули для приложения 
V
    Опции темы
gambit
Дата 9.9.2008, 11:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***
Награды: 1



Профиль
Группа: Комодератор
Сообщений: 1359
Регистрация: 25.6.2006
Где: я?

Репутация: 3
Всего: 40



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

В книгах по этому поводу написано очень мало.  smile 
PM MAIL ICQ Skype   Вверх
Veitmen
Дата 9.9.2008, 12:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 288
Регистрация: 10.11.2006
Где: СПБ

Репутация: 1
Всего: 4



Создаешь солюшен. Добавляешь проект типа ClassLibrary. Пишешь нужные тебе типы. Компилишь. В папке bin твоего проекта будет лежать DLLка. Если тебе надо использовать эту DLLку просто при написании других программ или других сборок, то добавляешь ее в Reference проекта(правой кнопкой на проекте, AddReference). И не забудь в юните прописать using + namespace твоих типов.
PM MAIL ICQ   Вверх
Exai1e
Дата 9.9.2008, 15:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 908
Регистрация: 3.12.2006
Где: Moscow

Репутация: 4
Всего: 30



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


--------------------
"Решение зависит от выбранного геморроя" © Snowy
"у нас как в армии - либо работает, либо так и задумано"
PM MAIL ICQ   Вверх
source777
Дата 9.9.2008, 17:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1878
Регистрация: 12.3.2007

Репутация: 3
Всего: 56



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

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



--------------------
Если бы программистам платили за то, чтобы убирать код из программы вместо того, чтобы добавлять его, программы были бы намного лучше © Николас Негропонте
PM MAIL   Вверх
Miller_time
Дата 9.9.2008, 18:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 641
Регистрация: 8.9.2006
Где: Нижний Новгород

Репутация: нет
Всего: 1



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

Код

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



--------------------
Мы делаем игрыЗДЕСЬ
PM MAIL WWW ICQ   Вверх
gambit
Дата 9.9.2008, 22:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***
Награды: 1



Профиль
Группа: Комодератор
Сообщений: 1359
Регистрация: 25.6.2006
Где: я?

Репутация: 3
Всего: 40



А если я хочу создать файл, описать какие функции внем есть и все. Т.е. чтоб она не требовалась при разработке приложения
PM MAIL ICQ Skype   Вверх
Veitmen
Дата 10.9.2008, 04:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 288
Регистрация: 10.11.2006
Где: СПБ

Репутация: 1
Всего: 4



Цитата(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. Вызываешь функции которые определены в этом интерфейсе.
Короче гугли. 
PM MAIL ICQ   Вверх
gambit
Дата 10.9.2008, 07:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***
Награды: 1



Профиль
Группа: Комодератор
Сообщений: 1359
Регистрация: 25.6.2006
Где: я?

Репутация: 3
Всего: 40



Цитата(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  и следовательно код сразу является машинным.


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

PM MAIL ICQ Skype   Вверх
Veitmen
Дата 10.9.2008, 09:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 288
Регистрация: 10.11.2006
Где: СПБ

Репутация: 1
Всего: 4



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


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


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

Хм... Пожалуйста...
PM MAIL ICQ   Вверх
jonie
Дата 10.9.2008, 22:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 5613
Регистрация: 21.8.2005
Где: Владимир

Репутация: 6
Всего: 118



Цитата

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

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


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


--------------------
Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет...
PM MAIL Jabber   Вверх
gambit
Дата 10.9.2008, 22:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***
Награды: 1



Профиль
Группа: Комодератор
Сообщений: 1359
Регистрация: 25.6.2006
Где: я?

Репутация: 3
Всего: 40



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

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

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

Добавлено через 3 минуты и 8 секунд
И это все в C#
PM MAIL ICQ Skype   Вверх
Veitmen
Дата 11.9.2008, 07:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 288
Регистрация: 10.11.2006
Где: СПБ

Репутация: 1
Всего: 4



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

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

+1 smile 

PM MAIL ICQ   Вверх
gambit
Дата 11.9.2008, 08:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***
Награды: 1



Профиль
Группа: Комодератор
Сообщений: 1359
Регистрация: 25.6.2006
Где: я?

Репутация: 3
Всего: 40



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


Мне иногда хочется матом ругатся!!! Что непонятного??? И кстати до вас 2 учасника поняли вопрос.
PM MAIL ICQ Skype   Вверх
Veitmen
Дата 11.9.2008, 09:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 288
Регистрация: 10.11.2006
Где: СПБ

Репутация: 1
Всего: 4



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

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


PM MAIL ICQ   Вверх
Dennnis
Дата 11.9.2008, 17:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 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'
PM   Вверх
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
Partizan
PashaPash

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, Partizan, PashaPash.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | .NET для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0822 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.