3 / 3 / 0
Регистрация: 06.10.2012
Сообщений: 249
1

QT и сторонние библиотеки

21.09.2016, 17:01. Показов 915. Ответов 10
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Поставил QT. Потребовалась библиотека из QtSolutions (QtService).
Собрал ее (lib/bin/inc). mingw32-make install прописал ее в самом QT.
Но при попытке использовать заголовочные файлы, говорит, что не может их обнаружить.

Как правильно прописать пути в проекте? Или сторонние библиотеки правильнее хранить в отдельной
папке в самом проекте? Хотелось бы чтобы пути были относительными для простоты переноса проекта
в другое место.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
21.09.2016, 17:01
Ответы с готовыми решениями:

Как подключать сторонние библиотеки в Qt Creator?
Здравствуйте! Я новичок в Qt. Пытаюсь подключить внешнюю статическую библиотеку к проекту, что-то...

Сторонние библиотеки
Здравствуйте. У меня такой вопрос. Можно ли как нибудь подгружать сторонние библиотеки написанные...

Сторонние библиотеки
На официальном сайте наткнулся на: Ensemble8 MandelbrotSet Modena Может кто-нибудь объяснить,...

Java: Сторонние библиотеки
Где можно найти список сторонних Java библиотек?

10
1070 / 652 / 229
Регистрация: 14.01.2016
Сообщений: 2,031
Записей в блоге: 9
21.09.2016, 19:27 2
Цитата Сообщение от xbarmaglot Посмотреть сообщение
Или сторонние библиотеки правильнее хранить в отдельной
папке в самом проекте?
Именно так.
Вот, к примеру, как у меня идёт подключение openssl:
Код
contains(ANDROID_TARGET_ARCH,armeabi-v7a) {
    message("* Using settings for Android armv7a.")
    INCLUDEPATH += ../<имя проекта>/libs/android-21/openssl/armv7a-gcc-4.9/include
    LIBS += -L../<имя проекта>/libs/android-21/openssl/armv7a-gcc-4.9/lib
    ANDROID_EXTRA_LIBS = \
        ../<имя проекта>/libs/android-21/openssl/armv7a-gcc-4.9/lib/libssl_1_0_0.so \
        ../<имя проекта>/libs/android-21/openssl/armv7a-gcc-4.9/lib/libcrypto_1_0_0.so
}

contains(ANDROID_TARGET_ARCH,x86) {
    message("* Using settings for Android x86.")
    INCLUDEPATH += ../<имя проекта>/libs/android-21/openssl/x86-gcc-4.9/include
    LIBS += -L../<имя проекта>/libs/android-21/openssl/x86-gcc-4.9/lib
    ANDROID_EXTRA_LIBS = \
        ../<имя проекта>/libs/android-21/openssl/x86-gcc-4.9/lib/libssl_1_0_0.so \
        ../<имя_проекта>/libs/android-21/openssl/x86-gcc-4.9/lib/libcrypto_1_0_0.so
}
LIBS += -lcrypto
../<имя проекта>/ - потому что папка сборки находится в соседней папке с исходниками.
0
3 / 3 / 0
Регистрация: 06.10.2012
Сообщений: 249
21.09.2016, 19:30  [ТС] 3
но ведь библиотеки я собираю под конкретный компилятор.
если проект я перенесу на другую машину, под другой qt, то их все-равно переваривать нужно будет
0
1070 / 652 / 229
Регистрация: 14.01.2016
Сообщений: 2,031
Записей в блоге: 9
21.09.2016, 19:36 4
Цитата Сообщение от xbarmaglot Посмотреть сообщение
но ведь библиотеки я собираю под конкретный компилятор.
если проект я перенесу на другую машину, под другой qt, то их все-равно переваривать нужно будет
И? Вы не только под конкретный компилятор библиотеки собираете, но и под конкретную архитектуру.

Добавлено через 1 минуту
И даже более того - под конкретную ОС.
0
3 / 3 / 1
Регистрация: 28.11.2015
Сообщений: 108
21.09.2016, 22:48 5
Да на счет OS это верно. Я тоже тут озадачился с путями кл lib , все это красиво написать какая операционка и какой путь , только зачем когда есть Переменные среды.
отрывок из Qmake
Код
unix:!macx: LIBS += -L/usr/lib/jvm/java-8-openjdk-amd64/jre/lib/amd64/server/ -ljvm
только вот не задача если ставлю JAVA_HOME вместо /usr/lib/jvm/java-8-openjdk-amd64/ то не компилируется ((((( моежт быть xbarmaglot тебе прописать полный путь )

Добавлено через 6 минут
поправлюсь если так то
Код
unix:!macx: LIBS += -L${JAVA_HOME}/jre/lib/amd64/server/ -ljvm
собирается но не запускается вот ошибка
Bash
1
QtProj/build-workJava-Desktop_Qt_5_7_0_GCC_64bit-Debug/workJava: error while loading shared libraries: libjvm.so: cannot open shared object file: No such file or directory
0
1070 / 652 / 229
Регистрация: 14.01.2016
Сообщений: 2,031
Записей в блоге: 9
22.09.2016, 07:23 6
DVyacheslavN, вставьте message(${JAVA_HOME}/jre/lib/amd64/server/) и отследите, лежит ли по данному адресу libjvm.so.
0
3 / 3 / 1
Регистрация: 28.11.2015
Сообщений: 108
22.09.2016, 13:22 7
Wyn , что то в этой строчке не хватает просто выводит текст ), ну ладно найду, а разве вот такой вариант не устроит из консоли
там все есть)
Bash
1
cd ${JAVA_HOME}/jre/lib/amd64/server/ && ls
0
1070 / 652 / 229
Регистрация: 14.01.2016
Сообщений: 2,031
Записей в блоге: 9
22.09.2016, 14:44 8
Цитата Сообщение от DVyacheslavN Посмотреть сообщение
что то в этой строчке не хватает просто выводит текст
Это уже должно настораживать. Значит что-то не так. Значит переменная не читается таким образом.
А читается она(как и любая другая переменная окружения) в qmake с помощью $$(JAVA_HOME). Используй данную запись.
1
3 / 3 / 1
Регистрация: 28.11.2015
Сообщений: 108
22.09.2016, 14:55 9
Bash
1
unix:!macx: LIBS += -L$(JAVA_HOME)/jre/lib/amd64/server/ -ljvm
Разобрался подсказка была в самом makefile увидел что вместо { } ставится ()
0
1070 / 652 / 229
Регистрация: 14.01.2016
Сообщений: 2,031
Записей в блоге: 9
22.09.2016, 15:19 10
Цитата Сообщение от DVyacheslavN Посмотреть сообщение
Разобрался подсказка была в самом makefile увидел что вместо { } ставится ()
Такой способ немного отличается от представленного мною выше:
http://doc.qt.io/qt-5.7/qmake-language.html

To obtain the contents of an environment value when qmake is run, use the $$(...)
To obtain the contents of an environment value at the time when the generated Makefile is processed, use the $(...)
0
3 / 3 / 1
Регистрация: 28.11.2015
Сообщений: 108
23.09.2016, 08:04 11
если $$(JAVA_HOME) то в make
Bash
1
-L/usr/lib/jvm/java-8-openjdk-amd64/jre/lib/amd64/server/ -ljvm
а если $(JAVA_HOME) то в make
Bash
1
-L$(JAVA_HOME)/jre/lib/amd64/server/ -ljvm
Второй вариант явно интереснее т.к он не зависит от всего пути и можно даже другую версию java подставить в переменную JAVA_HOME и есть вероятность что make соберется и на другом пк где java в другом месте хранится ну по крайней мере с java уже не будет проблем )))

Добавлено через 1 час 43 минуты
Тут решил запустить скомпилированный файл workJava не запускается, попробовал из консоли и вот результат
ввожу
Bash
1
2
3
./workJava
ответ 
error while loading shared libraries: libjvm.so: cannot open shared object file: No such file or directory
хотя из QtCreator запускается ((
0
23.09.2016, 08:04
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
23.09.2016, 08:04
Помогаю со студенческими работами здесь

Сторонние библиотеки Java
Всем привет! Изучил основы Java и хотел бы что-то уже поделать (например программу с gui), но...

Сторонние библиотеки/фреймворки
Занимался тут созданием одной программки для себя, и для нее мне понадобилась некоторая библиотека....

Научите подключать сторонние библиотеки
Вот у меня есть проект(в IDEA). Появилась необходимость скачать библиотеку itextpdf. Вот github...

А безопасно ли импортировать сторонние библиотеки
Собственно сейчас народ, без зазрения совести цепляет к своим приложениям все подряд. Лишь бы...

Сube MX отклчает сторонние библиотеки.
Связка cube +keil. В Keil я подключаю сторонние библиотеки. После изменения в кубе и регенерации...

С++ Windows Form, WinAPI и сторонние библиотеки
Возникли следующие вопросы: 1. Можно ли в Net проекте Visual C++ напрямую использовать функции...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru