Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [Qt] Как подключить к проекту dll библиотеку? 
:(
    Опции темы
Elfet
  Дата 19.9.2009, 14:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Белый и Пушистый
****


Профиль
Группа: Awaiting Authorisation
Сообщений: 3776
Регистрация: 2.4.2003

Репутация: нет
Всего: 16



Всем привет! 

Подскажите пожалуйста как подключить к проекту на Qt библиотеку dll? 

Заранее спасибо! 


--------------------
PM MAIL WWW Skype   Вверх
Acer
Дата 19.9.2009, 20:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 652
Регистрация: 5.9.2007
Где: UA::DN

Репутация: 15
Всего: 8



Например так:
в *.pro файле пишем
Код

LIBS += /path/to/lib1.dll \
        /path/to/lib2.dll


Добавлено через 1 минуту и 28 секунд
А если пишешь в MSVS, то там в свойствах проекта указываешь *.lib файл библиотеки, которую нужно линковать
PM MAIL   Вверх
ecspertiza
Дата 19.9.2009, 23:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 763
Регистрация: 3.11.2008
Где: г.Смоленск

Репутация: 4
Всего: 5



Если честно не совсем понятно что значит подключить dll библиотеку, есть такой замечательный класс для вызова функций из длл

QLibrary

вот пример из ассистента
Код

 QLibrary myLib("mylib");
 typedef void (*MyPrototype)();
 MyPrototype myFunction = (MyPrototype) myLib.resolve("mysymbol");
 if (myFunction)
     myFunction();



Это сообщение отредактировал(а) ecspertiza - 19.9.2009, 23:18


--------------------
С уважением,
мастер конфетного цеха!

онлайн компилер
залип
PM MAIL   Вверх
Elfet
Дата 19.9.2009, 23:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Белый и Пушистый
****


Профиль
Группа: Awaiting Authorisation
Сообщений: 3776
Регистрация: 2.4.2003

Репутация: нет
Всего: 16



ecspertiza, я создал проект в QCreator который у них называется "Библиотека С++". Так как вот теперь мне воспользоваться этой библиотекой? smile

Добавлено через 9 минут и 31 секунду
В проекте "библиотека С++" объявляются какие-то глобальные штуки:
Код

#ifndef SMARTFLOWLIB_GLOBAL_H
#define SMARTFLOWLIB_GLOBAL_H

#include <QtCore/qglobal.h>

#if defined(SMARTFLOWLIB_LIBRARY)
#  define SMARTFLOWLIBSHARED_EXPORT Q_DECL_EXPORT
#else
#  define SMARTFLOWLIBSHARED_EXPORT Q_DECL_IMPORT
#endif

#endif // SMARTFLOWLIB_GLOBAL_H


Код

#ifndef SMARTFLOWLIB_H
#define SMARTFLOWLIB_H

#include "SmartFlowLib_global.h"

class SMARTFLOWLIBSHARED_EXPORT SmartFlowLib {
public:
    SmartFlowLib();
};

#endif // SMARTFLOWLIB_H


Как с этим работать?


--------------------
PM MAIL WWW Skype   Вверх
ecspertiza
Дата 21.9.2009, 08:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 763
Регистрация: 3.11.2008
Где: г.Смоленск

Репутация: 4
Всего: 5



Я так понимаю, что ты хочешь работать с классом SmartFlowLib ?

то можно почитать тут http://www.prog.org.ru/topic_8259_0.html


--------------------
С уважением,
мастер конфетного цеха!

онлайн компилер
залип
PM MAIL   Вверх
bsa
Дата 21.9.2009, 11:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 24
Всего: 196



Elfet, ты в начале темы спрашивал, как подключить DLL к проекту. Ответа два:
1. Если нужна жесткая привязка к DLL (т.е. без нее нельзя запускать), то ответ дал Acer
2. Если нужна опциональная возможность загрузки (типа плагина), то ответ дал ecspertiza.
3. Если тебе нужно написать плагин, то в документации Qt есть отдельная тема по этому поводу.
PM   Вверх
Elfet
Дата 21.9.2009, 13:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Белый и Пушистый
****


Профиль
Группа: Awaiting Authorisation
Сообщений: 3776
Регистрация: 2.4.2003

Репутация: нет
Всего: 16



bsa, мне нужна жёсткая привязка. Я написал LIBS += ... однако не могу понять как воспользоваться теперь моим классом (SmartFlowLob)

ecspertiza, ооо! спасибо то что нужно! smile)


--------------------
PM MAIL WWW Skype   Вверх
ecspertiza
Дата 21.9.2009, 14:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 763
Регистрация: 3.11.2008
Где: г.Смоленск

Репутация: 4
Всего: 5



А в LIBS не забыл длл-ку подключить?


--------------------
С уважением,
мастер конфетного цеха!

онлайн компилер
залип
PM MAIL   Вверх
Elfet
Дата 21.9.2009, 14:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Белый и Пушистый
****


Профиль
Группа: Awaiting Authorisation
Сообщений: 3776
Регистрация: 2.4.2003

Репутация: нет
Всего: 16



ecspertiza, всё вроде заработало, спасибо smile


--------------------
PM MAIL WWW Skype   Вверх
Elfet
  Дата 22.9.2009, 08:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Белый и Пушистый
****


Профиль
Группа: Awaiting Authorisation
Сообщений: 3776
Регистрация: 2.4.2003

Репутация: нет
Всего: 16



А так и должно быть, что подключая к проекту библиотеку:
Цитата
# SmartFlowLib
INCLUDEPATH += ../../Projects/SmartFlowLib
LIBS += -L./release/ -lsmartflowlib1

Я должен подключать так же теже библиотеки которые используются в ней:

Цитата
# SmartFlowLib NeedIt(boost)
INCLUDEPATH += D:/boost/boost_1_40_0
LIBS += D:/boost/boost_1_40_0/stage/lib/libboost_serialization-mgw34-s-1_40.lib


Получается я в самой библиотеке (SmartFlowLib) подключаю libboost_serialization-mgw34-s-1_40.lib,
и в самом приложении, которое подключает SmartFlowLib подключаю libboost_serialization-mgw34-s-1_40.lib.

Так и должно быть?


--------------------
PM MAIL WWW Skype   Вверх
ecspertiza
Дата 22.9.2009, 09:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 763
Регистрация: 3.11.2008
Где: г.Смоленск

Репутация: 4
Всего: 5



Я так думаю что скорее всего да, так и должно быть я просто из одной либы другу не подключал, но если проект для сборки этого требует, то скорее всего так и должно быть smile


--------------------
С уважением,
мастер конфетного цеха!

онлайн компилер
залип
PM MAIL   Вверх
korbian
Дата 22.9.2009, 09:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 336
Регистрация: 20.2.2007
Где: Penza

Репутация: 1
Всего: 14



Цитата(Elfet @  22.9.2009,  09:57 Найти цитируемый пост)
Я должен подключать так же теже библиотеки которые используются в ней

Elfet, по идее это должно быть верным только для статических библиотек.



--------------------
korbian ©
PM   Вверх
Elfet
Дата 22.9.2009, 12:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Белый и Пушистый
****


Профиль
Группа: Awaiting Authorisation
Сообщений: 3776
Регистрация: 2.4.2003

Репутация: нет
Всего: 16



korbian, видимо я статическую библиотеку сделал? Нужно её динамической сделать?


--------------------
PM MAIL WWW Skype   Вверх
korbian
Дата 22.9.2009, 13:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 336
Регистрация: 20.2.2007
Где: Penza

Репутация: 1
Всего: 14



Цитата(Elfet @  22.9.2009,  13:38 Найти цитируемый пост)
Нужно её динамической сделать?

все зависит от дизайна твоего продукта.
если предполагается ее использование более чем в одном программном модуле в пределах системы, то логично сделать библиотеку динамически подключаемой. 


--------------------
korbian ©
PM   Вверх
Elfet
Дата 22.9.2009, 13:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Белый и Пушистый
****


Профиль
Группа: Awaiting Authorisation
Сообщений: 3776
Регистрация: 2.4.2003

Репутация: нет
Всего: 16



korbian, да, я для библиотеки хочу сделать два интерфейса - графический и из командной строки. 
Как сделать такую библиотеку? 


--------------------
PM MAIL WWW Skype   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С/С++: Кроссплатформенное программирование, QT/Gtk+/wxWidgets"
JackYF
Любитель
  • В заголовке темы в квадратных скобках обозначьте используемую вами библиотеку, например: [QT],[GTK],[wx].
  • Если вопрос актуален только для некоторой версии библиотеки, либо, если вы пользуетесь не самой последней версией, укажите это. Например: [QT4], [GTK2].
  • Все начинающие изучать Qt - не забудьте зайти сюда.
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • В вопросе укажите полную версию версию библиотеки, а также все дополнительные используемые программные пакеты.
  • Не забывайте пользоваться кнопкой "Код".
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к тематике этого раздела. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, Любитель.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets | Следующая тема »


 




[ Время генерации скрипта: 0.0866 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.