Russian Qt Forum
Июля 05, 2025, 09:01
Добро пожаловать,
Гость
. Пожалуйста,
войдите
или
зарегистрируйтесь
.
Вам не пришло
письмо с кодом активации?
1 час
1 день
1 неделя
1 месяц
Навсегда
Войти
Начало
Форум
WIKI (Вики)
FAQ
Помощь
Поиск
Войти
Регистрация
Russian Qt Forum
>
Forum
>
Qt
>
Вопросы новичков
>
Библиотеки
Страниц: [
1
]
Вниз
« предыдущая тема
следующая тема »
Печать
Автор
Тема: Библиотеки (Прочитано 2927 раз)
stima
Гость
Библиотеки
«
:
Декабря 19, 2011, 18:23 »
После серфинга в инете, я немного запутался:
dll - это динамические библиотеки
lib - это статические библиотеки
есть 2 способа подгрузки:
явное ( т.е. динамическое ) - выполняеться в нужный момент ( тут вроде все просто, по типу QLibrary )
неявное ( т.е. статическое ) - выполняеться при запуске программы, а вот тут:
1. Как я понял можно в .pro файле указать LIBS += -lpath/to/lib -llib (но как задать путь к приложению)
2. #pragma comment(lib, "lib.lib") - тут вроде тоже все понятно, но особенность этой дерективы, то что она ищет начиная с каталога где запущено приложение
прошу правок и дополнений, или хотябы ключевые слова поиска)
Записан
kuzulis
Джедай : наставник для всех
Offline
Сообщений: 2812
Re: Библиотеки
«
Ответ #1 :
Декабря 19, 2011, 20:20 »
Динамическая библиотека: dll/so два способа:
1. Динамическая подгрузка из программы в любое время из любого места
2. Подгрузка при старте программы только из предопределенного места
При этом исполняемая программа внутри себя не содержит кода библиотеки, т.е. мухи отдельно от котлет
Статическая библиотека: lib/a один способ:
1. Линковка библиотеки с кодом программы в процессе сборки.
При этом исполняемая программа внутри себя содержит и код библиотеки
Записан
ArchLinux x86_64 / Win10 64 bit
stima
Гость
Re: Библиотеки
«
Ответ #2 :
Декабря 21, 2011, 18:05 »
Вроде все понятно, но ничерта не получается. Мои действия:
1. У меня есть плагин, который использует сторонюю dll
2. Есть интерфейс класса это dll в котором прописана функция __declspec(dllimport) IClass* func()
3. В .pro файле этого плагина я прописую LIBS += -l$$PWD\libname. Соответственно libname.lib лежит в каталоге проэкта.
4. Все собираеться и запускается, но когда доходит до вызова функции IClass* pClass = func() идет краш Expression: _BLOCK_TYPE_IS_VALID
Я понимаю, что я через интерфейс обращаюсь к левому месту и поэтому это происходит, но как тогда правильно подключить эту гребанную библиотеку.
Я пробывал добавить через проэкт библиотеку (как со статическим так и с динамическим связыванием)
п.с. В debug версии все нормально.
п.с.с. Что где должно лежать и что куда писать я уже замахался перечитывать статьи.
Записан
Белый пони
Гость
Re: Библиотеки
«
Ответ #3 :
Декабря 22, 2011, 10:52 »
Цитата: kuzulis от Декабря 19, 2011, 20:20
Статическая библиотека: lib/a один способ:
1. Линковка библиотеки с кодом программы в процессе сборки.
При этом исполняемая программа внутри себя содержит и код библиотеки
Т.е. если собирать статически, то программа будет работать и в ОС, где не установлен Qt ?
Записан
iroln
Гость
Re: Библиотеки
«
Ответ #4 :
Декабря 22, 2011, 22:11 »
Можно и динамически линковать, но тогда придётся вместе с исполняемым файлом распространять "dll-ки". Для Qt - это чаще всего QtGui, QtCore
Записан
Страниц: [
1
]
Вверх
Печать
« предыдущая тема
следующая тема »
Перейти в:
Пожалуйста, выберите назначение:
-----------------------------
Qt
-----------------------------
=> Вопросы новичков
=> Уроки и статьи
=> Установка, сборка, отладка, тестирование
=> Общие вопросы
=> Пользовательский интерфейс (GUI)
=> Qt Quick
=> Model-View (MV)
=> Базы данных
=> Работа с сетью
=> Многопоточное программирование, процессы
=> Мультимедиа
=> 2D и 3D графика
=> OpenGL
=> Печать
=> Интернационализация, локализация
=> QSS
=> XML
=> Qt Script, QtWebKit
=> ActiveX
=> Qt Embedded
=> Дополнительные компоненты
=> Кладовая готовых решений
=> Вклад сообщества в Qt
=> Qt-инструментарий
-----------------------------
Программирование
-----------------------------
=> Общий
=> С/C++
=> Python
=> Алгоритмы
=> Базы данных
=> Разработка игр
-----------------------------
Компиляторы и платформы
-----------------------------
=> Linux
=> Windows
=> Mac OS X
=> Компиляторы
===> Visual C++
-----------------------------
Разное
-----------------------------
=> Новости
===> Новости Qt сообщества
===> Новости IT сферы
=> Говорилка
=> Юмор
=> Объявления
Загружается...