如何在Qt中读取库版本?
我想用Qt方法读取动态库的库版本(Mac上为.dylib,Windows上为.dll)。假设我创建了给定库的多个版本,现在我想阅读版本本身。我们可以将该版本添加到项目中,请参阅:如何在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\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。因为这个库实际上是项目的一部分,并且依赖于它,所以我没有加载库的方法。我使用的方法是库的一部分。关键是,可能会部分更新,而另一部分会过时。这是我想确定的。你找到解决办法了吗?