Смешивание разных версий библиотек в коде для Linux - PullRequest
0 голосов
/ 10 июня 2009

Программа, над которой я работаю, статически связана с 3rdPartyLibrary.lib.

Мы хотели воспользоваться более новой версией той же 3-й части библиотеки, скажем, 3-й части библиотекиНовойVersion.lib.

Таким образом, решение состоит в том, чтобы включить 3rdPartyLibraryNewVersion.so в качестве динамически связанной библиотеки для включения через динамическую библиотеку оболочки, называемую wrapper.so. Мы надеемся использовать как новую версию, так и старую версию 3rdPartyLibrary одновременно, но с другой стороной программы.

Решение, которое у нас есть, состоит в том, чтобы статически связать старую 3rdPartyLibrary и динамически связать ее с библиотекой-оберткой с 3rdPartyLibraryNewVersion одновременно.

программа --- статически связанная ---> 3rdPartyLibrary.lib. --- динамически связан -> wrapper.so --- динамически связан ---> 3rdPartyLibraryNewVersion.so.

Возможно ли это?

Проблема, с которой мы столкнулись, заключается в том, что, хотя wrapper.so работал с тестовым исполняемым файлом, он не работал в 3PartyLibraryNewVersion.so, когда обертка вызывается из программы, которая статически связана с 3rdPartyLibrary.lib.

Я сделал что-то не так?

Я знаю, что правильный способ - обновить наш код на 3rdPartyLibrary.lib, но это слишком утомительно ...

Спасибо

Тим

1 Ответ

0 голосов
/ 10 июня 2009

Вы не упомянули , как не удалось использовать вашу схему оболочки ...

Как бы вы это ни делали, вы, вероятно, столкнетесь с коллизиями пространства имен, которые приведут к сбою или непредвиденному поведению.

Вы знаете, что нужно сделать: обновите свой код. Если это слишком утомительно, то ваш код не должен стоить усилий. Если вам необходимо написать код для работы с новыми функциями, то его стоит обновить. last , что вам нужно, - это создать ситуацию, когда вы теперь привязаны к двум разным и несовместимым версиям одной и той же библиотеки. Если вам придется поддерживать его позже, вы пинаете себя. Если кто-то еще должен поддерживать это, они будут выслеживать вас и избивать. Делай это правильно.

...