Что вам нужно в статической библиотеке? - PullRequest
0 голосов
/ 22 февраля 2012

Я хочу попробовать сделать простой игровой движок. Просто то, что обрабатывает состояния, активы, персонажей / актеров и их статистику и инвентарь. Большую часть кода я могу взять из других игр, которые я написал, но я не совсем понимаю, как потом превратить его в статическую библиотеку. Мне нужен main.cpp? Если так, что должно пойти в это? Я предполагаю, что под Linux я скомпилирую его в .so и добавлю заголовки в мой каталог include, а затем просто сделаю ссылку на .so, но что мне делать на Windows и Mac?

1 Ответ

1 голос
/ 22 февраля 2012

.so - это не статическая библиотека, а динамическая.Статическая библиотека - это, по сути, файл .o, скомпилированный из одного файла C, или файл .a, который представляет собой просто набор файлов .o.

Статическая библиотека отличается от общейодна в том, что объектный код напрямую связан с конечным исполняемым файлом, не требуя никаких зависимостей во время выполнения.

В Unix команда ar (1) используется для объединения файлов .o в составной файл .aфайл.Я не знаю сопоставимой утилиты для Windows.

После того, как у вас есть файл .a, вам просто понадобится комбинация файлов .a и .h для создания кода.Вы используете файлы .h для компиляции, а затем связываетесь с файлом .a.

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

...