![]() |
|
![]() ![]() ![]() |
|
Elfet |
|
|||
![]() Белый и Пушистый ![]() ![]() ![]() ![]() Профиль Группа: Awaiting Authorisation Сообщений: 3776 Регистрация: 2.4.2003 Репутация: нет Всего: 16 |
Всем привет!
Подскажите пожалуйста как подключить к проекту на Qt библиотеку dll? Заранее спасибо! |
|||
|
||||
Acer |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 652 Регистрация: 5.9.2007 Где: UA::DN Репутация: 15 Всего: 8 |
Например так:
в *.pro файле пишем
Добавлено через 1 минуту и 28 секунд А если пишешь в MSVS, то там в свойствах проекта указываешь *.lib файл библиотеки, которую нужно линковать |
|||
|
||||
ecspertiza |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 763 Регистрация: 3.11.2008 Где: г.Смоленск Репутация: 4 Всего: 5 |
Если честно не совсем понятно что значит подключить dll библиотеку, есть такой замечательный класс для вызова функций из длл
QLibrary вот пример из ассистента
Это сообщение отредактировал(а) ecspertiza - 19.9.2009, 23:18 |
|||
|
||||
Elfet |
|
||||
![]() Белый и Пушистый ![]() ![]() ![]() ![]() Профиль Группа: Awaiting Authorisation Сообщений: 3776 Регистрация: 2.4.2003 Репутация: нет Всего: 16 |
ecspertiza, я создал проект в QCreator который у них называется "Библиотека С++". Так как вот теперь мне воспользоваться этой библиотекой?
![]() Добавлено через 9 минут и 31 секунду В проекте "библиотека С++" объявляются какие-то глобальные штуки:
Как с этим работать? |
||||
|
|||||
ecspertiza |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 763 Регистрация: 3.11.2008 Где: г.Смоленск Репутация: 4 Всего: 5 |
Я так понимаю, что ты хочешь работать с классом SmartFlowLib ?
то можно почитать тут http://www.prog.org.ru/topic_8259_0.html |
|||
|
||||
bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 24 Всего: 196 |
Elfet, ты в начале темы спрашивал, как подключить DLL к проекту. Ответа два:
1. Если нужна жесткая привязка к DLL (т.е. без нее нельзя запускать), то ответ дал Acer 2. Если нужна опциональная возможность загрузки (типа плагина), то ответ дал ecspertiza. 3. Если тебе нужно написать плагин, то в документации Qt есть отдельная тема по этому поводу. |
|||
|
||||
Elfet |
|
|||
![]() Белый и Пушистый ![]() ![]() ![]() ![]() Профиль Группа: Awaiting Authorisation Сообщений: 3776 Регистрация: 2.4.2003 Репутация: нет Всего: 16 |
bsa, мне нужна жёсткая привязка. Я написал LIBS += ... однако не могу понять как воспользоваться теперь моим классом (SmartFlowLob)
ecspertiza, ооо! спасибо то что нужно! ![]() |
|||
|
||||
ecspertiza |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 763 Регистрация: 3.11.2008 Где: г.Смоленск Репутация: 4 Всего: 5 |
А в LIBS не забыл длл-ку подключить?
|
|||
|
||||
Elfet |
|
|||
![]() Белый и Пушистый ![]() ![]() ![]() ![]() Профиль Группа: Awaiting Authorisation Сообщений: 3776 Регистрация: 2.4.2003 Репутация: нет Всего: 16 |
ecspertiza, всё вроде заработало, спасибо
![]() |
|||
|
||||
Elfet |
|
||||
![]() Белый и Пушистый ![]() ![]() ![]() ![]() Профиль Группа: Awaiting Authorisation Сообщений: 3776 Регистрация: 2.4.2003 Репутация: нет Всего: 16 |
А так и должно быть, что подключая к проекту библиотеку:
Я должен подключать так же теже библиотеки которые используются в ней:
Получается я в самой библиотеке (SmartFlowLib) подключаю libboost_serialization-mgw34-s-1_40.lib, и в самом приложении, которое подключает SmartFlowLib подключаю libboost_serialization-mgw34-s-1_40.lib. Так и должно быть? |
||||
|
|||||
ecspertiza |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 763 Регистрация: 3.11.2008 Где: г.Смоленск Репутация: 4 Всего: 5 |
Я так думаю что скорее всего да, так и должно быть я просто из одной либы другу не подключал, но если проект для сборки этого требует, то скорее всего так и должно быть
![]() |
|||
|
||||
korbian |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 336 Регистрация: 20.2.2007 Где: Penza Репутация: 1 Всего: 14 |
Elfet, по идее это должно быть верным только для статических библиотек. -------------------- korbian © |
|||
|
||||
Elfet |
|
|||
![]() Белый и Пушистый ![]() ![]() ![]() ![]() Профиль Группа: Awaiting Authorisation Сообщений: 3776 Регистрация: 2.4.2003 Репутация: нет Всего: 16 |
korbian, видимо я статическую библиотеку сделал? Нужно её динамической сделать?
|
|||
|
||||
korbian |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 336 Регистрация: 20.2.2007 Где: Penza Репутация: 1 Всего: 14 |
все зависит от дизайна твоего продукта. если предполагается ее использование более чем в одном программном модуле в пределах системы, то логично сделать библиотеку динамически подключаемой. -------------------- korbian © |
|||
|
||||
Elfet |
|
|||
![]() Белый и Пушистый ![]() ![]() ![]() ![]() Профиль Группа: Awaiting Authorisation Сообщений: 3776 Регистрация: 2.4.2003 Репутация: нет Всего: 16 |
korbian, да, я для библиотеки хочу сделать два интерфейса - графический и из командной строки.
Как сделать такую библиотеку? |
|||
|
||||
korbian |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 336 Регистрация: 20.2.2007 Где: Penza Репутация: 1 Всего: 14 |
Elfet, как я понял ты используешь QCreator.! Там такую библиотеку можно сделать так:
Добавлено через 2 минуты и 39 секунд или заменить CONFIG += staticlib на CONFIG += shared. но я, честно говоря, так не пробовал. -------------------- korbian © |
|||
|
||||
Elfet |
|
|||
![]() Белый и Пушистый ![]() ![]() ![]() ![]() Профиль Группа: Awaiting Authorisation Сообщений: 3776 Регистрация: 2.4.2003 Репутация: нет Всего: 16 |
korbian, да, это у меня в проекте с самого начала было:
|
|||
|
||||
korbian |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 336 Регистрация: 20.2.2007 Где: Penza Репутация: 1 Всего: 14 |
Elfet, ну значит все нормально, библиотека динамическая! не понятно только зачем ты подключаешь повторно статические(!!!) библиотеки, используемые в dll! покажи билд-лог без дублирования!
-------------------- korbian © |
|||
|
||||
Elfet |
|
||||||||||
![]() Белый и Пушистый ![]() ![]() ![]() ![]() Профиль Группа: Awaiting Authorisation Сообщений: 3776 Регистрация: 2.4.2003 Репутация: нет Всего: 16 |
Если убираю вот это:
То компилятор выдаёт:
Может я неправильно сделал саму библиотеку? Вот она такая: SmartFlowLib.h
main.h
Element.h
Ну и так далее... |
||||||||||
|
|||||||||||
korbian |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 336 Регистрация: 20.2.2007 Где: Penza Репутация: 1 Всего: 14 |
Elfet, нужно убрать только вот эту строчку в настройках проекта, использующего вашу dll:
а INCLUDEPATH не трогай.( если, конечно, в *.h файлах библиотеки нет вызовов функций\методов из boost::serialization. В таком случае дизайн вашей библиотеки неправильный и нужно будет перенести вызовы в *.c\*.cpp файлы, чтобы избавить клиентский код библиотеки от не нужных зависимостей) -------------------- korbian © |
|||
|
||||
Elfet |
|
||||
![]() Белый и Пушистый ![]() ![]() ![]() ![]() Профиль Группа: Awaiting Authorisation Сообщений: 3776 Регистрация: 2.4.2003 Репутация: нет Всего: 16 |
korbian, да, видимо неправильный дизайн библиотеки. А как можно перенести в cpp файлы вот эту строчку:
И видимо плохо то что у меня в заголовочном файле есть вот это:
|
||||
|
|||||
korbian |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 336 Регистрация: 20.2.2007 Где: Penza Репутация: 1 Всего: 14 |
Elfet,
а что мешает перенести в cpp? нет этот код придется оставить, для этого достаточно подключить в header <boost/serialization/access.hpp> -------------------- korbian © |
|||
|
||||
Elfet |
|
|||
![]() Белый и Пушистый ![]() ![]() ![]() ![]() Профиль Группа: Awaiting Authorisation Сообщений: 3776 Регистрация: 2.4.2003 Репутация: нет Всего: 16 |
Просто много где использую boost и не хочется каждый раз всё писать, поэтому я сделал один файл (main.h) в котором и делаю все подключения.
Ну вот как только подключу в хедере это сразу библиотека станет зависимой? |
|||
|
||||
korbian |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 336 Регистрация: 20.2.2007 Где: Penza Репутация: 1 Всего: 14 |
Elfet, думаю, что не станет. <boost/serialization/access.hpp>, вроде, хидер-онли.
-------------------- korbian © |
|||
|
||||
uiaaaia |
|
|||
Новичок Профиль Группа: Участник Сообщений: 2 Регистрация: 14.4.2011 Репутация: нет Всего: нет |
Я написал в .pro файле
LIBS += C:/Qt/2010.05/qt/Interface/libifaces.dll \ C:/Qt/2010.05/qt/Interface/libparams.dll В результате нажимаю выполнить, и у меня сразу выдает ошибку а в консоли приложения пишет Запускается C:\Qt\2010.05\qt\Interface-build-desktop\debug\Interface.exe... C:\Qt\2010.05\qt\Interface-build-desktop\debug\Interface.exe завершился с кодом -1073741511 Пробовал добавлять строчку INCLUDEPATH += C:/Qt/2010.05/qt/Interface Все равно запускает программу, но тут же выдает ошибку Помогите пожалуйста исправить это |
|||
|
||||
![]() ![]() ![]() |
Правила форума "С/С++: Кроссплатформенное программирование, QT/Gtk+/wxWidgets" | |
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, Любитель. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |