0

I'm developing C++ application program under Ubuntu 20.04, with two libraries each has its own linked OpenCV version. The library calling is like the following:

Application (OpenCV 4.5.3)
└──Library A (OpenCV 4.5.3)
   └──Dynamic loaded plugin of library A (link to OpenCV 4.5.3)
      └──Prebuilt library B
         └──Dynamic loaded plugin of library B (link to OpenCV 3.4.1)

Most of the components are all organized with CMakeLists and compiled locally, except the prebuilt library B and its plugins since the source codes are not available.

Every time I execute the application will get an cv::Exception like this:

OpenCV(4.5.3-openvino) ../opencv/modules/core/src/matrix_wrap.cpp:910: error: (-213:The function/feature is not implemented) 

Using GDB to see the dumped call stack, it's odd that at runtime the plugin of library B will eventually link to the .so of 4.5.3. Is there any compiler options or something else missing to cause this problem?

  • 1
    You need to make sure that library B doesn't export any opencv symbols https://stackoverflow.com/questions/47284686/shared-library-using-a-different-version-of-another-shared-library-to-the-main-e https://stackoverflow.com/questions/228117/loading-multiple-shared-libraries-with-different-versions – Alan Birtles Mar 28 '22 at 14:08

0 Answers0