Russian Qt Forum
Февраль 24, 2024, 15:39 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Подключение библиотеки к проекту  (Прочитано 4795 раз)
alexorleon
Гость
« : Май 24, 2016, 08:12 »

Добрый день!
Никак не получается подключить библиотеку к проекту под android. Подскажите, если кто сталкивался с этим.

Есть проект который хочется пощупать https://github.com/dept2/CuteLogger

Его .pro:
Код:
QT       -= gui

TARGET = Logger
TEMPLATE = lib

DEFINES += CUTELOGGER_LIBRARY

INCLUDEPATH += ./include

SOURCES += src/Logger.cpp \
           src/AbstractAppender.cpp \
           src/AbstractStringAppender.cpp \
           src/ConsoleAppender.cpp \
           src/FileAppender.cpp \
           src/RollingFileAppender.cpp

HEADERS += include/Logger.h \
           include/CuteLogger_global.h \
           include/AbstractAppender.h \
           include/AbstractStringAppender.h \
           include/ConsoleAppender.h \
           include/FileAppender.h \
           include/RollingFileAppender.h

win32 {
    SOURCES += src/OutputDebugAppender.cpp
    HEADERS += include/OutputDebugAppender.h
}

android {
    SOURCES += src/AndroidAppender.cpp
    HEADERS += include/AndroidAppender.h
}

symbian {
    MMP_RULES += EXPORTUNFROZEN
    TARGET.UID3 = 0xE8FB3D8D
    TARGET.CAPABILITY =
    TARGET.EPOCALLOWDLLDATA = 1
    addFiles.sources = CuteLogger.dll
    addFiles.path = !:/sys/bin
    DEPLOYMENT += addFiles
}

unix:!symbian {
    maemo5 {
        target.path = /opt/usr/lib
    } else {
        target.path = /usr/lib
    }
    INSTALLS += target
}

Собираю (Ctrl+B). В каталоге сборки:
libLogger.so
libLogger.so.1
libLogger.so.1.0
libLogger.so.1.0.0

В корне своего приложения создал каталоги libs/Logger и include. Скопировал в libs/Logger "libLogger.so.1.0.0" и переименовал в "libLogger.so".
В каталоге include создал папку CuteLogger и скопировал туда include из проекта CuteLogger.
В своем .pro файле пишу это:
Код:
INCLUDEPATH += ./include/CuteLogger/include \
    ./libs/Logger

LIBS += -L libs/Logger -lLogger

В main.cpp подключил:
Код:
#include <Logger.h>
#include <ConsoleAppender.h>
#include <FileAppender.h>
...
// код использования
В итоге все работает как надо.

Пробую под android. Нагуглил, что для этого надо использовать ANDROID_EXTRA_LIBS.
Поэтому .pro файл изменил так:
Код:
android {
    QT += androidextras
    ANDROID_PACKAGE_SOURCE_DIR = $$PWD/android
    ANDROID_EXTRA_LIBS += $$PWD/android/libs/armeabi-v7a/libLogger.so
    OTHER_FILES += android/AndroidManifest.xml
}

INCLUDEPATH += ./include/CuteLogger/include \
#    ./libs/Logger

#LIBS += -L libs/Logger -lLogger

И скопировал в $$PWD/android/libs/armeabi-v7a либу "libLogger.so".
Но увы, чего-то не хватает, а чего, не пойму. Выдает ошибки вроде этой:
undefined reference to 'ConsoleAppender::ConsoleAppender()'

Как правильно подключить библиотеку к приложению под android?
Записан
qate
Супер
******
Offline Offline

Сообщений: 1175


Просмотр профиля
« Ответ #1 : Май 24, 2016, 20:01 »

старье какоето, что в нем хорошего ?
если очень хочется - добавь его к себе в проект (без либ)

Записан
alexorleon
Гость
« Ответ #2 : Май 25, 2016, 05:25 »

старье какоето, что в нем хорошего ?
А какие есть альтернативы? Перебрал кучу вариантов. Практически все не поддерживают android. А некоторые даже не поддерживают thread-safety. Тратить время на велик не рационально. А проект как мне кажется очень достойный.
если очень хочется - добавь его к себе в проект (без либ)
Пока так и сделал.
Записан
qate
Супер
******
Offline Offline

Сообщений: 1175


Просмотр профиля
« Ответ #3 : Май 25, 2016, 22:31 »

А какие есть альтернативы? Перебрал кучу вариантов. Практически все не поддерживают android. А некоторые даже не поддерживают thread-safety. Тратить время на велик не рационально. А проект как мне кажется очень достойный.

вся поддержка андроида это замена вывода в cerr на __android_log_write

этот логгер мне кажется излишне громоздким, я использую самописный логгер на 2 файла: h и cpp (иногда чегото дописываю)
не увидел я кэширования, чтобы каждый чих не выводить, а раз в 1 сек, например
очень удобно фильтровать по классам, тут это не заметил
но, если устраивает, используй
Записан
alexorleon
Гость
« Ответ #4 : Май 26, 2016, 05:07 »

не увидел я кэширования, чтобы каждый чих не выводить, а раз в 1 сек, например
А так критически важные сообщения не потеряются?

очень удобно фильтровать по классам, тут это не заметил
А можно немного подробнее про это?
Записан
qate
Супер
******
Offline Offline

Сообщений: 1175


Просмотр профиля
« Ответ #5 : Май 26, 2016, 19:08 »

не увидел я кэширования, чтобы каждый чих не выводить, а раз в 1 сек, например
А так критически важные сообщения не потеряются?

могут, но писать на каждый вывод может быть затратно, если его много
если упали, то есть корка
падение программы - это самая простая ошибка, ее можно повторить, а вот если работает "както нетак", это хуже, тут нужен лог
частоту вывода лога можно настраивать

очень удобно фильтровать по классам, тут это не заметил
А можно немного подробнее про это?

вывод в лог идет макросом, и он добавляет __PRETTY_FUNCTION__, которая добаляет и имя класса
далее можно или выводить её или нет в зависимости от настроек, можно задать в командной строке их

еще было бы хорошо выводить (иногда бывает нужно) каждый вход и выход из метода и функции, но как это сделать не ломая код я не знаю

Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.048 секунд. Запросов: 23.