Russian Qt Forum
Ноябрь 18, 2024, 05:05
Добро пожаловать,
Гость
. Пожалуйста,
войдите
или
зарегистрируйтесь
.
Вам не пришло
письмо с кодом активации?
1 час
1 день
1 неделя
1 месяц
Навсегда
Войти
Начало
Форум
WIKI (Вики)
FAQ
Помощь
Поиск
Войти
Регистрация
Russian Qt Forum
>
Forum
>
Qt
>
Общие вопросы
>
Доступ к DLL из QT
Страниц: [
1
]
Вниз
« предыдущая тема
следующая тема »
Печать
Автор
Тема: Доступ к DLL из QT (Прочитано 7531 раз)
pau
Гость
Доступ к DLL из QT
«
:
Декабрь 07, 2008, 12:24 »
Добрый день, коллеги.
Прошу прощения за вопрос - скорее всего более чем банальный.
Есть класс в dll, написанный под win32.
Код:
// mylib.dll, mylib.h
class MyClass
{
public:
MyClass();
~MyClass():
int MyFunction(int i);
};
Как мне использовать этот класс в приложении QT? Если можно, покажите пожалуйста пример кода и расскажите про настройку компилятора. Заранее большое спасибо.
Записан
ритт
Гость
Re: Доступ к DLL из QT
«
Ответ #1 :
Декабрь 07, 2008, 15:31 »
1.
Цитировать
class MyClass
замени на:
Цитировать
#ifdef Q_OS_WIN
# ifdef MYLIB_BUILD
# define MYLIB_EXPORT __declspec(dllexport)
# else
# define MYLIB_EXPORT __declspec(dllimport)
# endif
#endif
#ifndef MYLIB_EXPORT
# define MYLIB_EXPORT
#endif
class MYLIB_EXPORT MyClass
и компиляй либу с -DMYLIB_BUILD
2. в .pro (или .pri)-файл проекта добавь:
Цитировать
HEADERS += mylib.h
LIBS += -lmylib
3. в сорцах перед использованием напиши:
Цитировать
#include "mylib.h"
«
Последнее редактирование: Декабрь 07, 2008, 15:33 от Константин
»
Записан
pau
Гость
Re: Доступ к DLL из QT
«
Ответ #2 :
Декабрь 07, 2008, 20:14 »
спасибо. попробую
Записан
BaltikS
Гость
Re: Доступ к DLL из QT
«
Ответ #3 :
Декабрь 07, 2008, 20:43 »
не, Константин написал как создать DLL...
А для её использования использовать надо QLibrary.... в асситенте пример вызова есть.
Записан
spirit
Гость
Re: Доступ к DLL из QT
«
Ответ #4 :
Декабрь 07, 2008, 20:48 »
Цитата: BaltikS от Декабрь 07, 2008, 20:43
не, Константин написал как создать DLL...
А для её использования использовать надо QLibrary.... в асситенте пример вызова есть.
вот и использование
Цитировать
2. в .pro (или .pri)-файл проекта добавь:
Quote
HEADERS += mylib.h
LIBS += -lmylib
3. в сорцах перед использованием напиши:
Quote
#include "mylib.h"
Записан
BaltikS
Гость
Re: Доступ к DLL из QT
«
Ответ #5 :
Декабрь 07, 2008, 20:52 »
А, не прочёл до конца, там же класс, а не функция... Всё верно...при условии что имеется lib-файл.
«
Последнее редактирование: Декабрь 07, 2008, 21:01 от BaltikS
»
Записан
pau
Гость
Re: Доступ к DLL из QT
«
Ответ #6 :
Декабрь 08, 2008, 09:02 »
Цитата: Константин от Декабрь 07, 2008, 15:31
1.
Цитировать
class MyClass
замени на:
Цитировать
#ifdef Q_OS_WIN
# ifdef MYLIB_BUILD
# define MYLIB_EXPORT __declspec(dllexport)
# else
# define MYLIB_EXPORT __declspec(dllimport)
# endif
#endif
#ifndef MYLIB_EXPORT
# define MYLIB_EXPORT
#endif
class MYLIB_EXPORT MyClass
т.е. правильно ли я понимаю - если определено Q_OS_WIN то Qt понимает __declspec(dllexport/dllimport) ?
а можно ли загрузить dll используя что-то типа LoadLibrary и как в этом случае прописать функции?
опять заранее большое спасибо.
Записан
spirit
Гость
Re: Доступ к DLL из QT
«
Ответ #7 :
Декабрь 08, 2008, 09:05 »
вот человек предложил использовать
QLibrary
Цитата: BaltikS от Декабрь 07, 2008, 20:43
не, Константин написал как создать DLL...
А для её использования использовать надо QLibrary.... в асситенте пример вызова есть.
Записан
ритт
Гость
Re: Доступ к DLL из QT
«
Ответ #8 :
Декабрь 08, 2008, 09:35 »
ой, мой недочёт - вместо #ifdef Q_OS_WIN нужно писать что-то вроде #ifdef _WIN, т.к. Q_OS_WIN - кутэшный дефайн...
кутэ не понимает __declspec(dllexport/dllimport) - его понимает компилятор
Записан
pau
Гость
Re: Доступ к DLL из QT
«
Ответ #9 :
Декабрь 08, 2008, 11:47 »
Цитата: Константин от Декабрь 08, 2008, 09:35
ой, мой недочёт - вместо #ifdef Q_OS_WIN нужно писать что-то вроде #ifdef _WIN, т.к. Q_OS_WIN - кутэшный дефайн...
кутэ не понимает __declspec(dllexport/dllimport) - его понимает компилятор
а-а-а ... вот теперь понятно. конечно компилятор - я имел ввиду не Microsoft компилятор
Записан
Страниц: [
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 сферы
=> Говорилка
=> Юмор
=> Объявления
Загружается...