Russian Qt Forum

Qt => Общие вопросы => Тема начата: Aleksan от Май 10, 2005, 08:30



Название: Как сделать dll в QT?
Отправлено: Aleksan от Май 10, 2005, 08:30
Как сгенерировать проект который создает dll в QT?


Название: Как сделать dll в QT?
Отправлено: Admin от Май 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 - может быть статической или динамической


Название: Как сделать dll в QT?
Отправлено: Sergeich от Май 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
{
...
};

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


Название: Как сделать dll в QT?
Отправлено: Gregory от Май 11, 2005, 19:01
Цитировать

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

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


Название: Как сделать dll в QT?
Отправлено: Sergeich от Май 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 ) компиляторами.