![]() |
|
|
![]()
|
|
| Нитонисе |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 917 Регистрация: 5.11.2009 Репутация: 2 Всего: 2 |
Допустим есть некий набор функций, которые я поместил в отдельный модуль. Его я подключаю к своему приложению директивой
Насколько я понимаю эти же свои функции я могу поместить в dll и так же использовать их в своей программе. При этом вместе с исполняемым файлом мне также понадобится конечному пользователю предоставить и библиотеку. Мне кажется это минус для dll. Так какие в этих библиотеках есть преимущества? |
|||
|
||||
| DCamer |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 232 Регистрация: 29.1.2010 Репутация: нет Всего: нет |
Установщик - это плюс, если есть не только исполняемый файл, но и библиотеки Уменьшение веса исполняемого файла, что ускоряет его запуск. Добавлено через 4 минуты и 1 секунду Нитонисе, вот что говорит MSDN --------------------
Нуб! Windows 7 Ultimate x64, Embarcadero RAD Studio 2010 - C++Builder 2010 |
|||
|
||||
| Нитонисе |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 917 Регистрация: 5.11.2009 Репутация: 2 Всего: 2 |
Но загрузка функции из DLL вероятно происходит медленнее. Вообще я так понял польза от DLL в модульности. То есть если разработат модуль Unit.h/Unit.cpp и подключить его в программу, то если нам что-то надо будет поменять в этом модуле - нужно будет менять всю программу его использующую и перекомпилировать. А если используем dll, то можно поменять только код в библиотеке, не трогая основную программу. Правда при этом должно выполняться условие, что функции, использующиеся из этой библиотеки, должны быть объявлены так как они работают в программе, то есть возвращать те же значения и принимать те же параметры. Иначе без изменения самой программы не обойтись. |
|||
|
||||
| vikaz |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 869 Регистрация: 15.2.2006 Репутация: 10 Всего: 12 |
Это самое простое! Вообще DLL разрабатывалось для того, чтобы вынести часто используемые функции в отдельные библиотеки, чтобы несколько программ могли использовать этот код. Это дальше пошло развитие А-ЛЯ само подключаемые плагины и т.д. и т.п. Плюсов тут несколько: 1. Уменьшение загрузки исполняемого файла, что позволяет ему запускаться быстрее; 2. Уменьшение размера самого исполняемого файла, т.к. некоторый функционал вынесен в библиотеки; 3. Удобно расширять и адаптировать программы под нужды пользователя. (Допустим, ваша программа работает с БД MySQL, весь функционал по работе с данной БД у Вас вынесен в отдельную Dll. Работа между Dll и программой описано определенным интерфейсом. Позже Вы решили, что программа еще должна работать с локальной БД, допустим SQLite. Вы создаете новую Dll которая описывает работу с этой БД и отдаете её клиенту. А интерфейс работы между Dll и программой не изменился, так как он одинаков. Как видно из этого простого примера мы имеем сл. плюсы: 1. Не нужно переписывать код в основной программе 2. Клиент в любой момент может переключатся между различными БД) Для того чтобы использовать Dll как описали Вы должно быть выполнено несколько условий: 1. Dll должна подключаться только динамически; 2. Название функций и параметры вызова не должны измениться. -------------------- ![]() Нет ничего настолько исправного, чтобы в нем не было ошибок. /Ф. Петрарка/ |
|||
|
||||
| mrbrooks |
|
|||
![]() трололомен ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4259 Регистрация: 4.10.2006 Где: Дол Гулдур Репутация: 167 Всего: 306 |
Это только при повторной загрузке - при первой наоборот - дольше за счет дополнительной загрузки библиотеки и вызова функций. Хотя честно говоря - все эти как бэ скоростные вещи при современном развитие - просто лол |
|||
|
||||
| nick42 |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 24 Регистрация: 18.5.2010 Репутация: нет Всего: нет |
Помогите начинающему (дилетанту)! Сконструировал простенькую программку и dll-ку к ней. Добился, что работают в паре (при вызове dll активируется и появляется панель с контролами). Теперь хочу добиться, чтобы она воспроизводила мелодию (из ресурса) - использую
sndPlaySound("fragment1",SND_RESOURCE) из mmsystem.hpp В программе это работает, а для dll, думаю, нужно добавить модальность, запихнуть в трей или как-то еще. Проясните популярно... . |
|||
|
||||
| Dem_max |
|
||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1780 Регистрация: 12.4.2007 Репутация: 14 Всего: 39 |
Нет тут имелось ввиду другое, конечно же весомое приложение будет загружаться быстрее, за счет того что приложение не будет загружать не нужные библиотеки в данный момент.
Да без разницы везде будет работать что в отдельном EXE что в DLL -------------------- Американские программисты долго не могли понять, почему русские при зависании Windоws всё время повторяют "Твой зайка написал" ("Yоur bunnу wrоte") |
||||
|
|||||
| nick42 |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 24 Регистрация: 18.5.2010 Репутация: нет Всего: нет |
Да, действительно, - немного ее "повертел" и звук появился. Но мне не нравится, что программа ожидает конца звучания. Весь расчет был на то, чтобы dll-ка позволила программе отвязаться от этого процесса. А вот запускать процесс отдельной ниткой я не умею. Если знаете - как, то, пожалуйста, подскажите. В прилагаемом архиве тест-пример; там очень немного текста, буквально несколько строк (для BCB 5.0).
Благодарю за помощь. Присоединённый файл ( Кол-во скачиваний: 2 )
Prog.zip 53,02 Kb |
|||
|
||||
| xvr |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 48 Всего: 223 |
Добавь опцию SND_ASYNC ко 2му параметру sndPlaySound
|
|||
|
||||
| nick42 |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 24 Регистрация: 18.5.2010 Репутация: нет Всего: нет |
xvr, спасибо большое! Похоже, это то, что мне нужно.
|
|||
|
||||
![]()
|
| Правила форума "С++ Builder" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C++ Builder | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |