Совместимость версий Qt Jambi

#java #qt #version #qt-jambi

#java #qt #версия #qt-jambi

Вопрос:

Я намерен использовать Qt Jambi для написания графических интерфейсов Qt на Java.

В моей ОС Linux установлены последние версии библиотек Qt, которые в настоящее время имеют версию 4.7.4. Однако Qt Jambi доступен только как версия 4.7.0 на странице загрузки.

Теперь, когда я запускаю свое приложение Qt, я получаю следующую ошибку:

 Cannot mix incompatible Qt library (version 0x40704) with this library (version 0x40700)
  

Похоже, что нет обновленной версии Qt Jambi. Это из-за того, что он больше официально не поддерживается?

В качестве решения можно было бы создать его из исходного кода, но мне интересно, было ли оно тогда совместимо с установленной версией Qt.

Теперь я могу как-то смешать эти версии, несмотря на сообщение об ошибке? Если нет, то как добиться соответствия номеров версий? Насколько я знаю, Jambi доступен только для Ubuntu в виде двоичного пакета и на других платформах Linux должен быть развернут вместе с jar приложения (как фиксированная версия).

Комментарии:

1. Одна вещь, которую вы можете попробовать, это извлечь собственный jar и использовать chrpath для удаления rpaths и runpaths из этих библиотек, а затем использовать LD_LIBRARY_PATH для запуска в каталоге, где находятся все эти библиотеки. Эти старые версии IIRC по-прежнему поставляются с библиотеками, для которых установлены rpaths, поэтому они не работают должным образом, если присутствует системный Qt.

2. Кстати, какой у вас дистрибутив? Я так понимаю, что это не Ubuntu, поскольку пакеты Ubuntu не работают?

3. Вы правы, если я удалю rpaths из собственных библиотек и запущу приложение с набором LD_LIBRARY_PATH, оно сработает. Однако использование -Djava.library.path приводит к тому же сообщению об ошибке. Под «более старыми версиями» вы подразумеваете, что у следующих версий Qt Jambi не будет этой проблемы? Единственная доступная версия — 4.7.0 для Linux, возможно, пакеты Ubuntu новее. Чтобы ответить на ваш вопрос, я использую ArchLinux.

4. К сожалению, до сих пор нет новых выпусков, мы делаем все возможное, чтобы сделать некоторые в последующие месяцы.

5. можете ли вы подробнее рассказать об этом? Я использовал chrpath -d во всех собственных библиотеках в qtjambi-linux64-gcc.4.7.0.jar но это не решило проблему. Дело в том, что я могу запустить несколько примеров qt, но, например, медиаплеер не работает.

Ответ №1:

Будучи разработанным сообществом, Qt-Jambi немного отстает от официального Qt в разработке.

Qt-Jambi должен поставляться в комплекте с правильными библиотеками Qt, но, похоже, ваше приложение ссылается на самые последние библиотеки Qt, уже установленные в вашей системе. Вы не можете смешивать разные версии, поэтому вам нужно ссылаться на одну и ту же версию двоичных файлов Qt.

Если вы явно не ссылаетесь на новые библиотеки Qt в своей среде сборки, вам следует изменить переменную LD_LIBRARY_PATH среды, чтобы включить путь с правильными библиотеками.

Комментарии:

1. Или используйте -Djava.library.path, который может быть более подходящим для приложений Java. Но это не совсем решение проблемы, просто способ обойти проблему. Jar извлекается в /tmp, но что-то мешает их правильному использованию, я предполагаю, что это rpath.