QT_VERSION Неверно? - PullRequest
       3

QT_VERSION Неверно?

0 голосов
/ 10 сентября 2018

Я работаю над приложением Qt Android (Qt 5.11.1) и пытаюсь использовать библиотеку, которая проверяет версию Qt, используя QT_VERSION из QtGlobal.

Я получаю ошибки компиляции из-за недоступности функций, и, похоже, это потому, что сообщенная версия Qt неверна (библиотека ищет #if QT_VERSION >= 0x050000 ...)

Добавление следующих операторов трассировки;

qDebug() << "QT VERSION: " << QT_VERSION;
qDebug() << "QT STRING: " << QT_VERSION_STR;

Дает вывод:

... (int main(int, char**)): QT VERSION:  330497
... (int main(int, char**)): QT STRING:  5.11.1

Строка кажется правильной, но номер версии выглядит неправильно.

Я работаю на машине с Windows 7, на которой установлен Qt Creator 4.7, а также Qt 5.11.1 и 5.10.1, установленные с помощью инструмента обслуживания. Настройки сборки - это просто настройки по умолчанию для Android.

Я не слишком знаком с Qt и не знаю, куда идти отсюда, поэтому любая помощь будет принята с благодарностью.

Ответы [ 2 ]

0 голосов
/ 10 сентября 2018

С некоторыми битами QT_VERSION можно разделить на старшие / второстепенные / микро числа.

testQT_VERSION.cc:

#include <QtCore>

int main()
{
  qDebug() << "QT_VERSION_STR:" << QT_VERSION_STR;
  qDebug() << "QT_VERSION:"
    << (((QT_VERSION) >> 16) & 0xff)
    << (((QT_VERSION) >> 8) & 0xff)
    << ((QT_VERSION) & 0xff);
  return 0;
}

testQT_VERSION.pro

SOURCES = testQT_VERSION.cc

QT = core

Скомпилировано и протестировано на cygwin64 :

$ qmake-qt5 testQT_VERSION.pro

$ make

$ ./testQT_VERSION
QT_VERSION_STR: 5.9.4
QT_VERSION: 5 9 4

$

Также стоит отметить:

const char* qVersion()

Возвращает номер версии Qt во время выполнения в виде строки (например, «4.1.2»). Это может быть версия, отличная от версии, для которой было скомпилировано приложение.

0 голосов
/ 10 сентября 2018

Согласно документам Qt:

QT_VERSION

Этот макрос расширяет числовое значение в форме 0xMMNNPP (MM = major, NN = второстепенный, PP = патч), который определяет номер версии Qt. За Например, если вы скомпилируете ваше приложение с Qt 4.1.2, Макрос QT_VERSION расширится до 0x040102.

Означает, что он должен быть преобразован в шестнадцатеричное число, затем он покажет вам номер версии Qt. Ваш возвращенный номер - 330497, поэтому перевод его в шестнадцатеричный код будет 0X50B01. Поскольку B в десятичном виде - 11, версия - 5.11.1.

QT_VERSION_STR

Этот макрос раскрывается в строку , которая указывает номер версии Qt (для например, «4.1.2»). Это версия, против которой приложение компилируется.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...