C ++ связывает две разные версии файлов .so с помощью cmake - PullRequest
0 голосов
/ 05 мая 2020

Итак, у меня есть общая библиотека lib1.so, связывающая libopencv_core.so.4.2 PRIVATE (подтверждено с помощью ldd)

В другом проекте у меня есть цель lib2, которая связывает libopencv_core.so.3.2 и цель t который связывает как lib1.so, так и lib2.

Я надеялся и думал, что они lib1.so останутся с его явной компиляцией и используют opencv4 и t для компиляции с opencv3, поэтому что функции lib2, которые используются t, остаются с opencv3

По какой-то причине я получаю undefined reference to opencv4 specific function для lib1.so во время компиляции цели t, хотя lib1.so уже сгенерирован явной компиляцией.

Я предполагаю, что это означает, что компиляция t перезаписывает opencv привязку lib1.so, но я не понимаю, почему это происходит.

Может ли кто-нибудь объясните, почему это происходит, и объясните, как я могу это решить?

...