динамическая библиотека на C ++ - PullRequest
0 голосов
/ 29 января 2011

У меня есть приложение C ++, в котором используется динамически связанная библиотека. Я поместил приложение и библиотеку на цель, и приложение работает. Теперь я кое-что изменил в библиотеке, создал библиотеку и заменил старую библиотеку на новую.

Мои вопросы

  1. Принимает ли приложение новые библиотеки без перекомпиляции и перекомпоновки?

Спасибо!

Ответы [ 4 ]

1 голос
/ 29 января 2011

Да, но только если ваша новая библиотека ABI-совместима со старой.

Вы можете найти много информации об этом в Интернете.Я бы посоветовал вам прочитать этот FAQ о бинарной совместимости.

0 голосов
/ 29 января 2011

Если вы просто говорите о бинарной совместимости и о необходимости перекомпиляции и повторной компоновки приложения, то вам следует прочитать ссылку, приведенную в ответе peoro.

Тем не менее, приложение "Я немного смущен"работает "часть вашего вопроса.Если вы имеете в виду, что на самом деле она работает в тот самый момент, когда вы заменяете библиотеку, то она не будет использовать новую версию, если сначала не будет перезапущен или запущен другой экземпляр приложения (но тогда старый экземпляр все равно будет использоватьстарая версия).Не каждая ОС позволит вам просто заменить библиотеку, которая используется приложением, но есть обходные пути.В Windows вы не можете перезаписать или удалить старую библиотеку, но вы можете переместить или переименовать ее, прежде чем помещать туда новую версию.Linux позволит вам удалить старую версию, и если вы скопируете новую версию с помощью команды install, она сделает это автоматически для вас.Но старая версия не будет удалена физически из файловой системы до тех пор, пока приложение не будет закрыто, она будет просто невидима.

0 голосов
/ 29 января 2011

Да. Библиотека загружается во время выполнения динамическим компоновщиком. Пока ABI сохраняется (тот же компилятор и версия), ваш код будет без проблем использовать новый код без перекомпиляции.

0 голосов
/ 29 января 2011

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

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