如何在Qt中读取库版本?

如何在Qt中读取库版本?,qt,versioning,qmake,Qt,Versioning,Qmake,我想用Qt方法读取动态库的库版本(Mac上为.dylib,Windows上为.dll)。假设我创建了给定库的多个版本,现在我想阅读版本本身。我们可以将该版本添加到项目中,请参阅: 我确实知道如何阅读Qt库版本:Qt\u version\u STR 我不知道如何阅读我的应用程序版本:QApplication::applicationVersion() 我用一些版本手动创建了库。现在,我希望能够从文件(.dylib或.dll)中读取设置的版本。AFAIK,qmake中的版本变量实际上不会更改对象文件

我想用Qt方法读取动态库的库版本(Mac上为.dylib,Windows上为.dll)。假设我创建了给定库的多个版本,现在我想阅读版本本身。我们可以将该版本添加到项目中,请参阅:

  • 我确实知道如何阅读Qt库版本:
    Qt\u version\u STR
  • 我不知道如何阅读我的应用程序版本:
    QApplication::applicationVersion()

  • 我用一些版本手动创建了库。现在,我希望能够从文件(.dylib或.dll)中读取设置的版本。

    AFAIK,qmake中的版本变量实际上不会更改对象文件中的任何内容,至少在Windows中不会。(我实际上检查了makefile来验证它。)


    我的建议是将版本号烘焙到对象文件本身中,并提供一个可调用的方法来检索它。

    我发布它已经有一段时间了,但由于@Liviu询问,我将尝试自己回答它
    首先,我没有找到令人满意的基于Qt的解决方案

    为了便于分析,可以使用Qt例程来提供安全的使用。我建议在宏和示例的帮助下创建带有安全检查的新动态库,以防止继续使用较旧的Qt版本:

    #include <QtGlobal>`
    #if (QT_VERSION >= QT_VERSION_CHECK(5, 0, 0))
    #include <QtWidgets>
    #else
    #include <QtGui>
    #endif
    
    #包括`
    #如果(QT_版本>=QT_版本检查(5,0,0))
    #包括
    #否则
    #包括
    #恩迪夫
    

    但是,如果库已经创建并可能部署在某些本地计算机上,则不能应用此类解决方案。在这种情况下,需要某种依赖关系解析器。也就是说,在Linux机器上,它可能是ldd功能利用率,请参见。在osx中,应使用otool解析工具。解析后的信息应包含创建库文件(.dll、.dylib或.so文件)时使用的Qt版本。

    谢谢您的建议,jwernerny。因为这个库实际上是项目的一部分,并且依赖于它,所以我没有加载库的方法。我使用的方法是库的一部分。关键是,可能会部分更新,而另一部分会过时。这是我想确定的。你找到解决办法了吗?