如何使用 msvc 2019 编译 QT 4 dll?

Posted

技术标签:

【中文标题】如何使用 msvc 2019 编译 QT 4 dll?【英文标题】:How can I compile QT 4 dlls with msvc 2019? 【发布时间】:2020-12-23 13:44:20 【问题描述】:

我有一个使用 QT 4.6.2 的旧项目,该项目在 VS 2008 上运行。我能够使用 msvc 2019 工具链在 VS 2019 中编译它,但它在运行时崩溃。我看到问题的发生是因为当我使用 QString::toStdString() 函数时,它涉及使用 msvc90.dll (VS2008) 的 QTCore4.dll,但是在销毁 std::string 时,应用程序使用 msvc2019。这种不匹配会导致应用崩溃。

我想通过使用 msvc 2019 重新编译 QTCore4.dll 来修复它,但不知道该怎么做。我通过安装 QT 获得了 dll,没有说明如何重新编译它。

它甚至可能还是封闭源? 我认为升级到 QT 5 也是一种选择,但我现在想继续使用 QT 4。

【问题讨论】:

我建议获取这里的 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 命令提示符进行配置。 【参考方案1】:

Qt 5 在很大程度上与 Qt 4 源代码兼容。我首先强烈建议您尝试针对 Qt 5 编译您的项目(并修复任何小问题)。 如果你需要 Qt Declarative 模块,你可以根据 Qt 5 编译它。


话虽如此,Qt 是在开源 LGPL 许可下发布的。

您可以从 github 获取 Qt 4 源代码:https://github.com/qt/qt

构建 Qt 4 需要安装 perl 并运行 configure,然后是 nmake(用于 Visual Studio)。您将为 Visual Studio 2019 提供 need to set up some new things,并可能修复 2019 版编译器发现的代码不兼容性。

【讨论】:

以上是关于如何使用 msvc 2019 编译 QT 4 dll?的主要内容,如果未能解决你的问题,请参考以下文章

如何在Windows 7上改进Qt + MSVC编译时间?

Qt Creator 4.3.1 未检测到 MSVC 2015 编译器

QT中如何把msvc编译器换成mingw编译器

在带有 msvc2008 编译器的 Qt 中使用 afx_msg

如何单独提取出MSVC2017编译器并在其他IDE使用

VS2019安装Qt插件(附安装失败解决方案)