Подтвердить что ты не робот

Почему игровые движки предпочитают статические библиотеки в динамических библиотеках ссылок

Я читал несколько игровых книг. И они всегда предпочитают создавать движок как статическую библиотеку по динамической ссылке. Я новичок в С++, поэтому я не очень хорошо разбираюсь в статических библиотеках и динамических библиотеках ссылок. Все, что я знаю, это статические библиотеки, которые увеличивают размер вашей программы, где библиотеки DLL-ссылок загружаются по мере необходимости в вашей программе.

[править]

Я играл в игры, где почти казалось, что они использовали DLL для загрузки звука, освещения и того, что не все индивидуально. как уровень загружался. потому что вы не обязательно нуждаетесь в этом, когда находитесь в игровом меню.

4b9b3361

Ответ 1

Библиотеки динамических ссылок должны быть независимыми от позиции; это может привести к неэффективности работы на некоторых архитектурах процессоров.

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

Ответ 2

Независимо от позиции, он означает, что, поскольку игровой движок и DLL полностью разделены, DLL является автономной и не может быть переплетена в код игрового движка, тогда как статическая привязка библиотеки позволяет компилятору оптимизировать использование вашей игры код двигателя и код библиотеки.

Например, скажем, что небольшая функция, которую компилятор думает, должна быть встроена (скопирована непосредственно вместо вызова функции). Затем со статической библиотекой компилятор сможет встроить этот код, поскольку он знает, что такое код (вы связываетесь во время компиляции). Однако с динамической библиотекой компилятор не смог бы встроить этот код, поскольку он не знает, что такое код (поскольку он будет связываться во время выполнения).

Ответ 3

Другой вопрос касается различий между статическими и динамическими библиотеками: Когда использовать динамические и статические библиотеки

Что касается того, почему они используют статические библиотеки, дополнительная скорость может стоить того, и вы можете избежать аддона DLL (в прошлом это была большая проблема). Это также полезно, если вы хотите совместно распространять свою программу и библиотеки, гарантируя, что получатель имеет правильные зависимости, хотя вам не мешает вам распространять библиотеки DLL вместе с исполняемым файлом.

Ответ 4

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

Ответ 5

Еще одна часто забываемая причина, заслуживающая упоминания, заключается в том, что для многих игр вы не будете запускать много других вещей, и многие библиотеки, которые используются для игр, не будут использоваться для других вещей, которые вы можете использовать работать одновременно с игрой, поэтому вам не нужно беспокоиться об одном из основных положительных эффектов, которые вы получаете от использования разделяемых библиотек, то есть только одна копия (большая часть) библиотеки должна загружаться за один раз в то время как несколько вещей могут использовать одну копию. При запуске игры у вас, вероятно, будет только одна программа, которая захочет использовать эту библиотеку в любом случае, потому что вы, вероятно, не собираетесь запускать много других программ (в частности, других игр или 3D-программ) одновременно.

Вы также открываете возможность оптимизации глобальной/link-времени, что намного сложнее с общими библиотеками.