Russian Qt Forum
Ноябрь 27, 2024, 06:23 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Как сделать dll в QT?  (Прочитано 8019 раз)
Aleksan
Гость
« : Май 10, 2005, 08:30 »

Как сгенерировать проект который создает dll в QT?
Записан
Admin
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 1988



Просмотр профиля
« Ответ #1 : Май 10, 2005, 09:14 »

почитать про qmake там где

Цитировать
Templates
The template variable tells qmake what sort of makefile should be generated for the application. The following choices are available:

app - Creates a makefile that builds an application. This is the default, so if a template is not specified, this is used.

lib - Creates a makefile that builds a library.

vcapp - Creates a Visual Studio Project file which builds an application


опция lib - может быть статической или динамической
Записан
Sergeich
Гость
« Ответ #2 : Май 11, 2005, 14:19 »

Под виндой кроме записей в прошке типа
  TEMPLATE = lib
  CONFIG += dll
надо экспортировать нужные функции и классы с помощью __declspec(dllexport), для этого лучше написать что-то вроде

#ifdef Q_WS_WIN
   #define MY_EXPORT __declspec(dllexport)
#else
   #define MY_EXPORT
#endif

class MY_EXPORT MyClass
{
...
};

тогда все это хозяйство будет работать и под виндой и под никсами
Записан
Gregory
Гость
« Ответ #3 : Май 11, 2005, 19:01 »

Цитировать

тогда все это хозяйство будет работать и под виндой и под никсами

Если ты накогда не писали динамические библиотеки под Qt - то зачем всякую ерунду советовать :x
Для экспорта в Qt используется макрос Q_EXPORT
Записан
Sergeich
Гость
« Ответ #4 : Май 12, 2005, 09:39 »

Цитата: "Gregory"

Если ты накогда не писали динамические библиотеки под Qt - то зачем всякую ерунду советовать :x
Для экспорта в Qt используется макрос Q_EXPORT

Я написал под Qt не один десяток dll. А эту "ерунду" ты можешь обнаружить в Qt Reference Documentation, QLibrary::resolve ( const char * symb ).
Макрос Q_EXPORT нужен чтобы собрать саму Qt-шную библиотеку, после ее сборки он определен как __declspec(dllimport), если юзать его компилятор материться, но как-то работает( хотя вообще-то не должен ) и нет никаких гарантий, что это будет работать под другими( не MSVC ) компиляторами.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.089 секунд. Запросов: 23.