У меня есть старый проект, использующий QT 4.6.2, который работает на VS 2008. Я смог скомпилировать его в VS 2019 с набором инструментов msvc 2019, но он падает во время выполнения. Я вижу, что проблема возникает из-за того, что когда я использую функцию QString::toStdString(), она включает QTCore4.dll с использованием msvc90.dll (VS2008), но при уничтожении std::string приложение использует msvc2019. Это несоответствие заканчивается сбоем приложения.
Я хочу исправить это, перекомпилировав QTCore4.dll с помощью msvc 2019, но понятия не имею, как это сделать. Я получил dll, установив QT, и у меня нет инструкций, как ее перекомпилировать.
Это вообще возможно или это закрытый исходный код? Я предполагаю, что обновление до QT 5 также является вариантом, но пока я хотел бы остаться с QT 4.
Qt 5 в значительной степени совместим с исходным кодом Qt 4. Сначала я настоятельно рекомендую попытаться скомпилировать ваш проект (и исправить любые небольшие проблемы) с Qt 5. Если вам нужен декларативный модуль Qt, вы можете скомпилировать его для Qt 5, если необходимо.
При этом Qt выпускается под лицензией LGPL с открытым исходным кодом.
Вы можете загрузить исходный код Qt 4 с github: https://github.com/qt/qt
Сборка Qt 4 включает в себя установку Perl и запуск configure с последующим запуском nmake (для Visual Studio). Вам нужно будет настроить кое-что новое для Visual Studio 2019 и, возможно, исправить несовместимости кода, обнаруженные компилятором версии 2019 года.
Я рекомендую получить исходный код Qt-4.8.7, который находится здесь; https://download.qt.io/archive/qt/4.8/4.8.7/ в .zip или .tar.gz установите Active State Perl и Python перед настройкой из командной строки Visual Studio 2019.