【问题标题】:How close do Qt libraries have to match (COMPILE vs RUNTIME)Qt 库必须匹配多近(COMPILE vs RUNTIME)
【发布时间】:2016-03-25 14:34:56
【问题描述】:

我有一个使用 Qt5 库的应用程序。我正在针对 Qt 5.6.1 编译我的应用程序,但并非所有用户都已更新到最新的 Qt5 库,实际上一个用户仍在使用 Qt 5.4.0

我发现我正在使用 Qt 5.5 中引入的方法 - 但该应用程序仍然与使用 Qt 5.4.0 的用户一起运行(我假设他没有使用 Qt 5.5.0 中引入的方法运行该函数)

那么针对 Qt 库的 COMPILED 与 RUNTIME Qt 库的匹配度有多接近?必须 RUNTIME 版本 >= COMPILETIME 版本吗?还是必须 RUNTIME 版本 >= 我使用的方法的版本?

【问题讨论】:

    标签: qt shared-libraries version


    【解决方案1】:

    阅读这篇关于兼容性的简短article

    在 linux 上执行 ldd qtapp | grep -i qt 会给我这个输出

    libQt5Core.so.5 => /usr/lib/x86_64-linux-gnu/libQt5Core.so.5 (0x00007f3003cc3000)
    libQt5Gui.so.5 => /usr/lib/x86_64-linux-gnu/libQt5Gui.so.5 (0x00007f300419a000)
    libQt5Widgets.so.5 => /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5 (0x00007f30046e3000)
    

    据我了解,如果您将来更新您的 Qt 版本,例如从 Qt 5.4 到 Qt 5.5,那么应该不会有任何问题。它通常是安全的。

    但是,您所做的事情有潜在的危险并且会自找麻烦。我会称之为玩毒蛇并说它还没有咬我。迟早会的。

    使用 5.5 中引入的方法,然后让您的用户使用 5.4 是不正确的做法。

    如果您的客户使用的是 5.4,我强烈建议您也使用 5.4 版本。如果他们升级到 5.6 版,您的代码仍将运行,不会发生崩溃。如果您急需 5.6 版本,我建议随应用程序一起提供 5.6 dll,并告诉用户这是一个重要的升级。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-09-01
      • 1970-01-01
      • 2015-11-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多