Статические и Динамические Библиотеки - PullRequest
3 голосов
/ 19 мая 2011

Я использую SFML и создаю приложение в Code :: Blocks и mingw32. Я добавил библиотеки SFML (sfml-what.a) в свой проект, и он работает хорошо.

НО iIrc, статические библиотеки «компилируются» в исполняемый файл. Если это так, то зачем мне помещать все библиотеки DLL SFML рядом с исполняемым файлом, чтобы он мог работать где-либо за пределами Code :: Blocks? И если бы мне нужно было как-то «динамически связать» библиотеки DLL из Code :: Blocks с моим проектом (я не знаю, как это сделать), мне все равно пришлось бы поставлять свой исполняемый файл со всеми файлами .a для него. правильно бегать?

Заранее спасибо, я не совсем знаком с библиотеками, статическими или динамическими. Если это что-то меняет, я работаю над Ubuntu Linux и использую mingw32 для кросс-компиляции.

Ответы [ 2 ]

6 голосов
/ 04 сентября 2011

С SFML вы можете статически ссылаться на их библиотеки, как указано в комментариях выше. Таким образом, все это скомпилировано в исполняемый файл, и вам не нужно будет поставлять его вместе с DLL. Как это сделать, зависит от того, используете ли вы SFML 1.6 или 2.0.

1.6 не требует никаких определений препроцессора, но 2.0 требует, чтобы вы собрали решение / make-файл, используя cmake для вашего компилятора, а затем #define SFML_STATIC в ваших определениях препроцессора.

2 голосов
/ 19 мая 2011

В этом случае статические библиотеки просто содержат код, который взаимодействует с динамическими библиотеками, это не фактический код библиотеки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...