Две библиотеки разных версий в приложении - PullRequest
2 голосов
/ 09 июля 2019

Рассмотрим сценарий, в котором есть две общие библиотеки разной версии. Рассмотрим A.1.so, связанный с B.so, и A.2.so, связанный с C.so.Теперь B.so и C.so связаны с d.exe.Когда B.so хочет вызвать функцию в A.1.so, он заканчивает тем, что вызывает функцию в A.2.so. Из-за этого она дает нам неопределенное поведение.

Теперь я хочу свой B.soвызвать только A.1.so.Я могу изменить только A.1.so и B.so, ничего больше.Использование dlopen() является одним из вариантов, но для использования dlopen() я должен внести серьезные изменения в B.so.Есть много решений, приведенных ранее в Stack Overflow, но, похоже, ничего не работает.Пожалуйста, обратите внимание, что я могу вносить изменения в код только в A.1.so и B.so.

Есть ли другое решение этой проблемы, кроме dlopen().Я упомянул некоторые ссылки ниже.

1 Ответ

0 голосов
/ 16 июля 2019

Можете ли вы обернуть весь код в A1.cpp в namespace A1 и добавить using namespace A1 к B.cpp?Под A1.cpp и B.cpp я подразумеваю все соответствующие единицы перевода для A1.so и B.so.

...