Четверг, 21 Ноября 2024, 17:25

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Что лучше???
BADCOIQДата: Пятница, 23 Октября 2009, 11:46 | Сообщение # 1
Отец-основатель BADCOIQ Corporation © 2010
Сейчас нет на сайте
Что лучше. Один большой .exe и ни одной .dll или один маленький .exe с большим количеством .dll

"Do you think we can fly?
Well, I do."
MiniTivДата: Пятница, 23 Октября 2009, 12:02 | Сообщение # 2
ITS Kurt
Сейчас нет на сайте
По мне лучше exe, с отдельными файлами из других путей! Меньше шансов на взлом де компилятора и больше придётся попотеть!

Создай свою программу без программирования!
Антиграни...(читаем, вступаем для души)
PsychoДата: Пятница, 23 Октября 2009, 12:07 | Сообщение # 3
Психоламер
Сейчас нет на сайте
А как на счет среднего по размеру exe и среднего количества dll ?
Если серьёзно, то попробуй протестить в обоих случаях. И делай в том ваианте, где программа будет работать быстрее happy
nilremДата: Пятница, 23 Октября 2009, 13:34 | Сообщение # 4
Просветленный разум
Сейчас нет на сайте
Если ты планируеш использовать свой код в других проектах, выводи его в отдельнную dll. Так и удобнее и надежное, поскольку не нужно заботится о содержащемся в ней коде, если его работоспособность уже подтверждена ранее. Кроме того над каждой dll может работать отдельный программист.
Что касается скорости. Прграмма использующая dll точно загружается медленнее, и теоретически, медленнее работает. Но особого замедления в плане фпс я не замечал.


Windmill 2

WindMill 2D Game Engine
TovTripleZДата: Пятница, 23 Октября 2009, 14:06 | Сообщение # 5
Злая ящерка >:3
Сейчас нет на сайте
Меня, как потребителя, больше интересовал бы одинокий exe-шник: в файлах не путаешься.
Ну, это если мнение потребителей вас интересует, конечно. smile


Бледные дрыщекролики следят за вами
AkyltistДата: Пятница, 23 Октября 2009, 22:06 | Сообщение # 6
заслуженный участник
Сейчас нет на сайте
Quote
Меня, как потребителя, больше интересовал бы одинокий exe-шник: в файлах не путаешься.
Ну, это если мнение потребителей вас интересует, конечно.

Можно при инсталяции лить dll в System32, И проект сам будет их оттуда подгружать. В плане работоспособности зависит от того как линковать эти dll, статически или динамически, если их линковать при запуске программы, то они подгружаются еще до Энтри поинт самого exe, то есть перед инициализацией самой программы. На счет работоспособности отвечу легко и просто, dll - это обычный com объект, на них построена винда, на них заложен DX и OpenGL - инициализация com объекта занимает пару сотен тактов, так что на быстродействии это не как не скажется, по крайней мере для глаза точно)).

Как заметил уважаемый (лично мной) nilrem, в плане фпс Вы ничего не заметите, ну а на счет скорости работы, она основанна только на инициализации, и все функции которые локализированны в компиляторе основаны на WinAPI функциях которые инициализируются компилятором по умолчанию и Вы этого не видите, однако взглянув в IDA или Ольге (OllyDBG) да просто в таблицу импорта EXE вы увидите там либы, которые Вы можете присягнуть самому черту, Вы никогда не подключали.

Quote

Меньше шансов на взлом де компилятора и больше придётся попотеть!

Тут уже зависит от уровня знаний кодокопателя, можно и в либу сделать антиотладку не хуже чем в ехе)) не говоря о полиморфности и прочих приблудах, как тарить Точку входа, хучить кольцо, отлавливать VM и тд.

Ну и собственно по сабжу.

Quote
А как на счет среднего по размеру exe и среднего количества dll ?

Золотые слова. (ИМХО). Делайте оптимально и как лучше и удобнее Вам, а от обычного пользователя лишнее можно спрятать.
JackASSДата: Среда, 18 Ноября 2009, 21:08 | Сообщение # 7
частый гость
Сейчас нет на сайте
один ехе , думаю , по крайней мере я так делаю ! wink
anisimovДата: Четверг, 19 Ноября 2009, 01:28 | Сообщение # 8
старожил
Сейчас нет на сайте
Akyltist, dll -dinamic link library динамически загружаемые библиотеки.
Есть ещё статически загружаемые библиотеки в C/C++ это lib файлы, есть файлы описания языков C/C++ h и hpp. hpp это С++. Определения функций.
Статические библиотеки должны линковаться жёстко определением путей к файлу библиотеки. Динамические библилиотеки потому и динамические, что могут вызываться по мере надобности. Кроме того в Винде есть интересная возможность. Винда может помнить динамические библиотеки даже после выгрузки приложения. В XP Твикере есть опция выгружать динамические библиотики при выгрузке приложения. Зачем это нужно. Если динамическая библиотека не выгружена Виндой то при следующем запуске приложения загрузка идёт быстрее.
Статические библиотеки принадлежат только одному приложению тому к которому они прилинкованы, и выгружаются вместе с ним. Загружаются тоже вместе с ним. Но такой подход имеет минус. Расход оперативной памяти. Кто не работал на старых компах не поймёт. Тогда программисты извращались как могли испыользуя Верхнюю и Нижнюю память. Запускали программы не по дефолту, а через батники которые сначала запускали менеджере памяти и выводили память в нужный режим, а потом программу запускали. Это была целая наука. Управление памятью в MS DOS. Всё изменилось с появлением Винды.


http://vkontakte.ru/id56359373
Строю Город, обустраиваю Остров. Присоединяйтесь.


Сообщение отредактировал anisimov - Четверг, 19 Ноября 2009, 01:31
AkyltistДата: Четверг, 19 Ноября 2009, 09:21 | Сообщение # 9
заслуженный участник
Сейчас нет на сайте
Не совсем так, для файлов компоновки нужны строгие пути, для компиляторов, а для самой загрузки это не важно. Дабы не трогать компиляторы С++ и файлы компоновки к которым нужны те самые строгие пути, рассмотрим линковку либ на другом ЯП. Вот глаз падает на Дельфина.

Накатаем простейшую либу:

Важно помнить, что если при разработке dll использовалось соглашение stdcall, то и при её вызове должно использоваться тоже stdcall. Это делает возможным работать с нашей Dll другим программам используя данное соглашение.

Соберем простейший проект для статической загрузки dll и проверим, так ли особо нужны строгие пути.

Пытаемся запустить и у нас вылетает ошибка:

Все правильно, ведь библиотека находится в другой папке. Но мы ее не будем кидать в нашу папку с этим проектом, нет нет, мы ее кинем в папочку WINDOWS и теперь пробуем запустить. Вуаля проект запустился. Тоже самое будет если ее кинуть в windows/system windows/system32 и ряд других папок. Именно об этом я и говорил.

Не Важно, статическая либа или динамическая. Все либы можно слить в эти папки, и тогда у Вас останется голый ехе в Вашей папке. Как я и говорил.

Теперь о недостатках статических либ.
1) Если необходимых программе функций и библиотек много, то процесс их загрузки может занять значительное время. Однако вызовы будут происходить при работе быстрее, так как либа уже подгружена в память.
2) Функции будут отнимать оперативную память, причем все и одновременно, хотя программе возможно они не нужны в один и тот же момент времени.
3) Если какая-нибудь из необходимых библиотек отсутствует, то загрузка программы станет невозможна, т.е. таким образом невозможно реализовать, например, механизм плагинов. Поэтому следите что Вы поставляете в комплекте все файлы. А при распаковке уже решайте куда Вам их кидать.
4) В конце концов, компоновщику при компоновке программы понадобятся .LIB файлы на каждую подключаемую библиотеку. Наверное именно это и имел ввиду Уважаемы собеседник anisimov.

Ну что же, поедем дальше, что кота тянуть .. э .. за... хвост!!!

И так попробуем подгрузить либу динамически, пишем проект, дамы и господа.


Комментарии на русском посмотрите в папке с прилагаемым архивом) лень переписывать).
Сразу предупреждаю, если dll не будет в папке с проектом или в папках перечисленных выше) такие как windows, то будет ошибка чтения). А если нашу dll скинуть в папку windows то прога все нормально посчитает). Если не хотите эрроров то выставит он еррор в 0.

Ну и на последок, как видим для нашей самописной длл мы не писали ни каких файлов компановки, так как: Мы знаем имена функций непосредственно, и знаем какие параметры она использует.)))

Всем счастливо прочитать, лью архив иду пить чай.

Всем с уважением желаю доброго времени суток. Дернем по чайку коллеги.



Prooject.rar - тут файлы проектов
Din.rar - скомпилированный проект динамической загрузки
Stat.rar - скомпилированный проект статической загрузки
dll.rar - скомпилированная Dll.
Прикрепления: project.rar (12.2 Kb) · Din.rar (156.4 Kb) · Stat.rar (156.4 Kb) · dll.rar (38.6 Kb)
  • Страница 1 из 1
  • 1
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг