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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Невозможно удалить класс унаследованный из QDialog определенный в Shared DLL  (Прочитано 4859 раз)
IGHOR
Крякер
****
Offline Offline

Сообщений: 390



Просмотр профиля WWW
« : Апрель 04, 2010, 02:16 »

Пытаюсь сделать Shared DLL в котором будут сохраняться стандартные диалоги.
Раньше с DLL не работал, потому прошу помощи разобраться, может я что-то не так делаю.
Пользуюсь сборкой Qt отсюда http://qt.nokia.com/downloads/windows-cpp-vs2008

значит создаю в библиотеке пустой виджет унаследованный от QDialog, бросаю на него любые объекты и объединяю их лейаутом..
создаю программу для теста, подключаю в нее либу делаю кнопку по которой создаеться этот диалог и вызываеться exec().
После создания обьекта при попытке удалить объект класса прога вылетает с ошибкой.

Заметил что все работает если закоментировать ui.setupUi(this); но пройдя дебагером по функции setupUi не получаю ошибок.
могу попробовать создавать все объекты вручную, но объектов много и удобнее их редактировать через ui и еще хотелось бы понять в чем причина.
Прилагаю пример длл и программы в прикреплениях.

DLL импортирую так:
Код:
#ifndef SHAREDDLL_GLOBAL_H
#define SHAREDDLL_GLOBAL_H

#include <Qt/qglobal.h>

#ifdef SHAREDDLL_LIB
# define SHAREDDLL_EXPORT Q_DECL_EXPORT
#else
# define SHAREDDLL_EXPORT Q_DECL_IMPORT
#endif

#include <QDialog>

class SomeDialog : public QDialog
{
public:
SHAREDDLL_EXPORT SomeDialog(QWidget *parent = 0);
};

#endif // SHAREDDLL_GLOBAL_H
« Последнее редактирование: Апрель 04, 2010, 02:18 от IGHOR » Записан
Авварон
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3260


Просмотр профиля
« Ответ #1 : Апрель 04, 2010, 09:26 »

класс уи кто создавать будет?
Записан
Zmeishe
Гость
« Ответ #2 : Апрель 04, 2010, 11:15 »

Почему так
Код:
class SomeDialog : public QDialog
{
public:
SHAREDDLL_EXPORT SomeDialog(QWidget *parent = 0);
};

а не так
Код:
class SHAREDDLL_EXPORT SomeDialog : public QDialog
{
public:
SomeDialog(QWidget *parent = 0);
};

??
Записан
IGHOR
Крякер
****
Offline Offline

Сообщений: 390



Просмотр профиля WWW
« Ответ #3 : Апрель 04, 2010, 18:22 »

Zmeishe, и так то же самое, конструктор создается и диалог появляется но после закрытия и уничтожения ошибка без описания.
Авварон, а класс уи приватный и генерирует виджеты в конструкторе, и не виден из программы которая подключает длл, разве так нельзя?
можете скомпилировать кто-нибудь будет ли у вас ошибка
Записан
Авварон
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3260


Просмотр профиля
« Ответ #4 : Апрель 04, 2010, 19:42 »

а, уи не по указателю, извиняюсь...
Записан
mozgofil
Гость
« Ответ #5 : Апрель 18, 2010, 16:27 »

Zmeishe, и так то же самое, конструктор создается и диалог появляется но после закрытия и уничтожения ошибка без описания.
Авварон, а класс уи приватный и генерирует виджеты в конструкторе, и не виден из программы которая подключает длл, разве так нельзя?
можете скомпилировать кто-нибудь будет ли у вас ошибка
вообще, только последний вариант правильный.
пересобери всё и добавь деструктор

ЗЫ:
а вообще ты не правильно делаешь : нужно 1 солюшн создавать и в него уже добавлять
проект длл и тестовое приложение, чтобы их вместе дебажить
« Последнее редактирование: Апрель 18, 2010, 16:31 от mozgofil » Записан
IGHOR
Крякер
****
Offline Offline

Сообщений: 390



Просмотр профиля WWW
« Ответ #6 : Апрель 18, 2010, 21:05 »

вообще, только последний вариант правильный.
Это какой последний?

ЗЫ:
а вообще ты не правильно делаешь : нужно 1 солюшн создавать и в него уже добавлять
проект длл и тестовое приложение, чтобы их вместе дебажить
А это попробую, спасибо
Записан
mozgofil
Гость
« Ответ #7 : Апрель 19, 2010, 18:44 »

вообще, только последний вариант правильный.
Это какой последний?
class SHAREDDLL_EXPORT SomeDialog : public QDialog
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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