Это зависит от:
Если интерфейс библиотеки основан на C ++, он должен соответствовать C ++ ABI компилятора, который использует пользователь библиотеки. Обычно это означает, что пользователь должен использовать тот же компилятор с близким номером версии.
Если библиотека предоставляет только «плоский» интерфейс на основе C, даже если она написана внутри на C ++, ей нужен толькочтобы соответствовать C ABI компилятора, который использует пользователь библиотеки. C ABI обычно определяется платформой и является общим для компиляторов.
Обратите внимание, что «плоский» интерфейс может быть «преобразован» в интерфейс на основе классов C ++ с использованием классов «обертки», определенных в заголовках. В этом случае, пока бинарный файл библиотеки предоставляет только C-совместимые функциональные возможности, он все равно будет зависеть только от C ABI.
Кроме того, только в Windows есть функциональность, называемая "COM"который обеспечивает стандартный ABI, позволяющий программам использовать объекты, написанные с использованием разных компиляторов и даже разных языков. Тем не менее, COM-классы не являются обычными классами C ++, и их создание и использование весьма различны.
В конкретном случае OpenCV я никогда не использовал его, но, глядя на имя файла загрузки последней версии"OpenCV-4.1.1- vc14_vc15 .exe";это указывает на то, что он содержит библиотеки для использования с компилятором Microsoft Visual C ++ версий 14 и 15 (он же Visual Studio 2015 и 2017). Если вы хотите использовать его с MinGW (который использует компилятор GCC), вам нужно будет получить неофициальную сборку или скомпилировать ее из исходного кода самостоятельно.