Я новичок в Qt, кросс-компиляции и портировании, поэтому, пожалуйста, потерпите меня.
Моя цель — использовать библиотеку Qwt в ОС Playbook для приложения на основе Qt. Я нашел хороший учебник по Qt for Blackberry Playbook и Мне удалось запустить простое приложение Qt «Hello World» на моем планшете.
Следующим моим шагом было создание библиотеки Qwt и использование ее в моем приложении. Я потратил некоторое время на чтение о qmake и без проблем собрал библиотеку вместе с приложением, но когда я запускаю приложение, оно вылетает, как только я запускаю его.
Вот шаги, которые я предпринял при создании библиотеки и моего приложения:
- Скачал исходный код Qwt и использовал qmake, поставляемый с портом RIM Qt. Для справки: при установке порта Qt создается каталог "stage", а qmake находится здесь:
~/stage/nto/armle-v7/usr/lib/qt4/bin/qmake
. Сначала у меня была ошибка о плагине дизайнера, но после выключения дизайнера он скомпилировался без ошибок или предупреждений. - Я создал один из примеров, поставляемых с Qwt. Я только добавил строку в код (на основе инструкций учебника):
QCoreApplication::addLibraryPath("app/native/lib");
. Это необходимо, чтобы сообщить приложению, где во время выполнения находятся общие библиотеки, расположенные на устройстве. Здесь тоже нет проблем. Мой файл .pro выглядел следующим образом:
включить( $${PWD}/../examples.pri )
TARGET = curvdemo1
DESTDIR = .
QMAKE_LFLAGS += '-Wl,-rpath,\'./app/native/lib\''
LIBS += -lbbsupport
SOURCES = \
curvdemo1.cpp
package.target = $${TARGET}.bar
package.depends = $$TARGET
package.commands = blackberry-nativepackager \
-devMode \
-package $${TARGET}.bar -arg -platform -arg blackberry \
blackberry-tablet.xml $$TARGET \
-e icon.png res/icon.png \
-e splashscreen.png res/splashscreen.png \
-e $$[QT_INSTALL_LIBS]/libQtCore.so.4 lib/libQtCore.so.4 \
-e $$[QT_INSTALL_LIBS]/libQtGui.so.4 lib/libQtGui.so.4 \
-e $$[QT_INSTALL_LIBS]/libQtOpenGL.so.4 lib/libQtOpenGL.so.4 \
-e $$[QT_INSTALL_LIBS]/libQtNetwork.so.4 lib/libQtNetwork.so.4 \
-e $$[QT_INSTALL_LIBS]/libbbsupport.so.4 lib/libbbsupport.so.4 \
-e $$[QT_INSTALL_PLUGINS]/platforms/libblackberry.so lib/platforms/libblackberry.so
-e /home/builder/Qwt/qwt-6.0.1/lib/libqwt.so.6 lib/libqwt.so.6 \
-e /home/builder/Qwt/qwt-6.0.1/lib/libqwtmathml.so.6 lib/libqwtmathml.so.6
QMAKE_EXTRA_TARGETS += package
Я упаковал приложение и развернул его, однако при запуске приложение вылетает, как только исчезает заставка.
Шаги, перечисленные выше, относятся к моей попытке использовать Qwt в качестве разделяемой библиотеки. Я попытался создать его как статическую библиотеку, удалив QwtDll
в соответствии с инструкциями библиотеки, но окончательный результат тот же. Я могу сказать, что бинарный файл использует статические библиотеки в зависимости от его размера.
С моими небольшими знаниями я могу предположить, что библиотека Qwt была неправильно собрана и не может быть правильно загружена моим тестовым приложением. Если да, то как правильно перенести эту библиотеку на ОС Playbook? Если нет, что еще мне не хватает на этих шагах?
Кстати, я пока не могу использовать Momentics для отладки (по другим причинам).
Заранее благодарю вас за ваш вклад в мой опыт обучения.