Сторонние библиотеки + QT necessitas



  • Задача передо мной такая: нужно написать программу для работы с pdf для конкретной версии андроид. Версия, естественно, не из новых - 2.2.2, поэтому использовать QT5 не могу, не поддерживает такое старье... потому я скачал неофициальный QT_necessitas. Для теста написал просто приложение с кнопкой и чекбоксом, все собралось, запустилось. работает. Ну и чтобы не писать велосипедов да и вообще чтоб жить легче было решил воспользоваться готовой библиотекой для pdf - библиотекой poppler. Скачал - собрал - получил файлы .a .dll.
    И собственно сам вопрос: как подключить эту библиотеку к проекту, чтобы она работала в моем приложении? В файл .pro прописывал пути, и библиотеки эти - не работает...



  • Покажите пожалуйста .pro файл.
    Какие ошибки выбрасываются при сборке?



  • @#-------------------------------------------------

    Project created by QtCreator 2014-04-07T00:33:42

    #-------------------------------------------------

    QT += core gui

    TARGET = popplerTEST
    TEMPLATE = app

    SOURCES += main.cpp

    HEADERS +=

    INCLUDEPATH += C:/poppler/include/poppler/qt4

    LIBS +=
    -L C:/poppler/lib -lpoppler.dll
    -L C:/poppler/lib -lpoppler-qt4.dll

    OTHER_FILES +=
    android/AndroidManifest.xml
    android/res/drawable/icon.png
    android/res/drawable/logo.png
    android/res/drawable-hdpi/icon.png
    android/res/drawable-ldpi/icon.png
    android/res/drawable-mdpi/icon.png
    android/res/layout/splash.xml
    android/res/values/libs.xml
    android/res/values/strings.xml
    android/res/values-de/strings.xml
    android/res/values-el/strings.xml
    android/res/values-es/strings.xml
    android/res/values-et/strings.xml
    android/res/values-fa/strings.xml
    android/res/values-fr/strings.xml
    android/res/values-id/strings.xml
    android/res/values-it/strings.xml
    android/res/values-ja/strings.xml
    android/res/values-ms/strings.xml
    android/res/values-nb/strings.xml
    android/res/values-nl/strings.xml
    android/res/values-pl/strings.xml
    android/res/values-pt-rBR/strings.xml
    android/res/values-ro/strings.xml
    android/res/values-rs/strings.xml
    android/res/values-ru/strings.xml
    android/res/values-zh-rCN/strings.xml
    android/res/values-zh-rTW/strings.xml
    android/src/org/kde/necessitas/ministro/IMinistro.aidl
    android/src/org/kde/necessitas/ministro/IMinistroCallback.aidl
    android/src/org/kde/necessitas/origo/QtActivity.java
    android/src/org/kde/necessitas/origo/QtApplication.java
    android/version.xml
    @

    Имена файлов: libpoppler.dll.a и libpoppler-qt4.dll.a

    ошибки следующего содержания:
    @..\popplerTEST/main.cpp:10: error: undefined reference to 'Poppler::Document::load(QString const&, QByteArray const&, QByteArray const&)'
    ..\popplerTEST/main.cpp:11: error: undefined reference to 'Poppler::Document::isLocked() const'
    ..\popplerTEST/main.cpp:13: error: undefined reference to 'Poppler::Document::~Document()'
    ..\popplerTEST/main.cpp:29: error: undefined reference to 'Poppler::Page::renderToImage(double, double, int, int, int, int, Poppler::Page::Rotation) const'
    ..\popplerTEST/main.cpp:36: error: undefined reference to 'Poppler::Page::~Page()'
    ..\popplerTEST/main.cpp:38: error: undefined reference to 'Poppler::Document::~Document()'
    ..\popplerTEST/main.cpp:23: error: undefined reference to 'Poppler::Document::page(int) const'
    collect2: ld returned 1 exit status
    ma-make: *** [libpopplerTEST.so] Error 1
    16:55:56: The process "C:\QT_necessitas\QtCreator\bin\ma-make.exe" exited with code 2.
    Error while building/deploying project popplerTEST (target: Necessitas Qt 4.8.2 for Android armv5)
    When executing step 'Make'@

    Примечательно, что в QT 4.7.4 для desktop этот проект собирается без проблем.



  • Попробуйте добавить "PRE_TARGETDEPS":http://qt-project.org/doc/qt-4.8/qmake-variable-reference.html#pre-targetdeps
    @
    PRE_TARGETDEPS += /path/to/library/libpoppler.dll.a
    @



  • добавил @PRE_TARGETDEPS += C:/poppler/lib/libpoppler.dll.a
    PRE_TARGETDEPS += C:/poppler/lib/libpoppler-qt4.dll.a@

    На результате, увы, не сказалось...



  • Вы пробовали собрать poppler'овские примеры для Qt 4.8.2 for Android armv5?

    В qtcreator есть возможность добавить библиотеку через визард, попробуйте добавить таким образом poppler может оно ещё какие флаги установит.



  • пробовал, на них те же ошибки...

    Через визард можно добавить только файлы формата .lib, у меня нет таких файлов... у меня только .a и .dll есть



  • Столкнулся с похожей ошибкой в моем проекте. Только ругался мой плагин на одну из моих же статических библиотек. Проблема решилась перестановкой нескольких строк местами. Все мои статические библиотеки включаются подобным образом
    @
    unix:!macx: LIBS += -L$$OUT_PWD/../../lib/Tools/ -lTools

    INCLUDEPATH += $$PWD/../../lib/Tools
    DEPENDPATH += $$PWD/../../lib/Tools

    unix:!macx: PRE_TARGETDEPS += $$OUT_PWD/../../lib/Tools/libTools.a
    @

    Для каждой существуют такие блоки в 4 строчки с разными именам.
    Попереставлял эти блоки местами и заработало.
    Кстати в вашем .pro файле я не вижу DEPENDPATH


Log in to reply
 

Looks like your connection to Qt Forum was lost, please wait while we try to reconnect.