![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() |
ssdmt |
![]()
Сообщение
#1
|
Новичок Группа: Новичок Сообщений: 3 Регистрация: 9.11.2009 Пользователь №: 1214 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
Всем знатокам Qt однозначно привет!!! ))
Входные данные: ------------------------- первое - у меня есть проект dll библотеки в Qt. второе - в этой dll экспортируется ф-ия extern "С" CMyClass* CreateDynamicMyClass(); ,которая динамически создаёт класс CMyClass третье - этот класс(CMyClass) наследуется от QTcpServer и имеет СИГНАЛЫ и СЛОТЫ, т.е. макрос Q_OBJECT ;) четвёртое - если filename.exe(тестовый проект без QCoreApplication - ПОЛНОСТЬ ГОЛЫЙ только LoadLibrary и GetProcAddress, console applic.) компилирую gcc, функция CreateDynamicMyClass() возвращает объект CMyClass и из него отрабатывает метод start() пример: CMyClass* class = dll->CreateDynamicMyClass(); // думаю мысль понятна :) class->start(); // ВСЁ ОТРАБАТЫВАЕТ КОРРЕКТНО!!! пятое - если filename.exe скомпилировать в Visual Studio 2008(так же полность "голый"), то всё - при вызове class->start() .. start имеет адресс по которому нельзя обратиться - код ошибки 5! .. ВОПРОСЫ: - кто нибудь сталкивался с такой ситуацией? почему таблица виртальных функций слетает?? в Visual Studio? P.S. не предлагать компилить в gcc, так как проект сам в Visual Studio и собрать его с помощью gcc просто нереально :( ... идея моя в том, чтобы сделать dll-qt библиотеку в которая даёт класс для работы с сокетами! для VisualStudio проекта! .. вот кто поможет на сотыч кину 200 руб ;) |
|
|
![]() |
ssdmt |
![]()
Сообщение
#2
|
Новичок Группа: Новичок Сообщений: 3 Регистрация: 9.11.2009 Пользователь №: 1214 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
если в dll я сделаю видимыми ф-ии уже логики класса, то это будет неверно идеологически, нафик оно через одно место опять-то нужно? :) ведь хотели как лучше ... патаму есть тока одна ф-ия CreateMyClass(), а вот из него уже через абстрактный и тягаю нужную бизнесс-логику :), а вот она то как раз(ф-ии класса) и не хачит отрабатывать если filename.exe собрано в visual studio... балян-калян.
вот как оно полное выглядит(очень приближённо):
|
|
|
![]() ![]() ![]() |
![]() |
|
Текстовая версия | Сейчас: 15.3.2025, 18:18 |