Qt库必须匹配到什么程度(编译与运行时)

Qt库必须匹配到什么程度(编译与运行时),qt,shared-libraries,version,Qt,Shared Libraries,Version,我有一个使用Qt5库的应用程序。我正在根据Qt5.6.1编译我的应用程序,但并非所有用户都已更新到最新的Qt5库,事实上仍有一个用户使用Qt5.4.0 我发现我使用的是Qt5.5中引入的方法,但应用程序仍然与使用Qt5.4.0的用户一起运行(我假设他没有使用Qt5.5.0中引入的方法运行函数) 那么,编译后的Qt库与运行时Qt库的匹配程度如何?运行时版本必须>=编译时版本?或者运行时版本>=我使用的方法的版本?阅读关于兼容性的简介 在linux上执行lddqtapp | grep-iqt可以得到

我有一个使用Qt5库的应用程序。我正在根据Qt5.6.1编译我的应用程序,但并非所有用户都已更新到最新的Qt5库,事实上仍有一个用户使用Qt5.4.0

我发现我使用的是Qt5.5中引入的方法,但应用程序仍然与使用Qt5.4.0的用户一起运行(我假设他没有使用Qt5.5.0中引入的方法运行函数)

那么,编译后的Qt库与运行时Qt库的匹配程度如何?运行时版本必须>=编译时版本?或者运行时版本>=我使用的方法的版本?

阅读关于兼容性的简介

在linux上执行
lddqtapp | grep-iqt
可以得到以下输出

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版本,比如从Qt5.4到Qt5.5,那么应该不会有任何问题。一般来说是安全的

然而,你所做的是潜在的危险和自找麻烦。我称之为玩毒蛇,说它还没有咬我。迟早会的

使用5.5中介绍的方法,然后让用户使用5.4不是正确的做法

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

阅读此兼容性简介

在linux上执行
lddqtapp | grep-iqt
可以得到以下输出

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版本,比如从Qt5.4到Qt5.5,那么应该不会有任何问题。一般来说是安全的

然而,你所做的是潜在的危险和自找麻烦。我称之为玩毒蛇,说它还没有咬我。迟早会的

使用5.5中介绍的方法,然后让用户使用5.4不是正确的做法

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