В библиотеке Qt имеется двоичная совместимость между основными выпусками. Но как насчет совместимости между разными компиляторами?Совместимость qt dll между компиляторами
Например, у меня есть приложение и 2 dll, которые используют Qt (динамически связанные). Но один из них построен с MSVC, а другой с MinGW. Таким образом, они связаны с различными сборками библиотеки Qt (той же версии).
Вопрос: возможно ли, чтобы эти DLL работали вместе, используя одну общую Qt-dll? Если нет, то какие обходные пути возможны, учитывая, что смена компилятора не является вариантом?
Я посмотрел на Qt dlls с зависимым ходоком, и я вижу, что есть десятки экспортируемых функций, которые имеют компилятор-специфическое имя. Поэтому кажется, что невозможно заставить их работать вместе.
*** Но как насчет совместимости между различными компиляторами? *** Они несовместимы из-за более чем 1 CRT (приведет к случайному искажению кучи) и различной реализации стандартной библиотеки (также UB). – drescherjm
Да, но нужно использовать только одну Qt dll -> таким образом, только один Qt CRT. –
Qt может быть из одного компилятора, но я предполагаю, что оба .dll USE Qt или даже стандартная библиотека C++. Если это так, у вас будут объекты, которые пересекают границы CRT и несовместимые проблемы с ABI. – drescherjm