2011-01-29 2 views
0

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

Мои вопросы

  1. ли приложение принимает новый libarary с вне recompliing и перекомпоновки?

Спасибо!

ответ

1

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

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

0

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

0

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

0

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

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

Смежные вопросы