Рассмотрим сценарий, в котором есть две общие библиотеки разной версии. Рассмотрим 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()
Есть ли другое решение этой проблемы, кроме dlopen().Я упомянул некоторые ссылки ниже.
Можете ли вы обернуть весь код в A1.cpp в namespace A1 и добавить using namespace A1 к B.cpp?Под A1.cpp и B.cpp я подразумеваю все соответствующие единицы перевода для A1.so и B.so.
A1.cpp
namespace A1
using namespace A1
B.cpp
A1.so
B.so