2

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

  1. 我确实知道如何阅读 Qt 库版本:QT_VERSION_STR
  2. 我确实知道如何阅读我的应用程序的版本:QApplication::applicationVersion()

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

4

2 回答 2

0

AFAIK,qmake 中的 VERSION 变量实际上并没有改变目标文件中的任何内容,至少对于 Windows 没有。(我实际上检查了 Makefile 来验证它。)

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

于 2013-09-27T13:01:05.397 回答
0

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

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

#include <QtGlobal>`
#if (QT_VERSION >= QT_VERSION_CHECK(5, 0, 0))
#include <QtWidgets>
#else
#include <QtGui>
#endif

但是,如果库已经创建并可能部署在某些本地机器上,则无法应用这种解决方案。在那种情况下,需要某种依赖解析器。即在 Linux 机器上,它可能是 ldd 功能利用,请参阅 SO answer。在 osx 中应使用otool解析工具。解析的信息应包含在库文件创建期间使用的 Qt 版本(.dll、.dylib 或 .so 文件)。

于 2017-04-15T12:34:55.160 回答