Название: [РЕШЕНО] DLL + QTcpSocket вызов из не QT приложения (обработка сообщений) Отправлено: mos4ever от Июнь 18, 2013, 11:18 Здравствуйте! Вопрос уже поднимался, но рабочего варианта не нашел.
Есть 1. Qt прога: connect(sok, SIGNAL(readyRead()), SLOT(onReadyRead())); 2. DLL на Qt: EXPORT void sokConnect() { sok = new QTcpSocket(); sok->connectToHost(addr, 5588); } EXPORT void sendCmd() { QByteArray block; QDataStream out(&block, QIODevice::WriteOnly); out << (quint16)0 << 47; out.device()->seek(0); out << (quint16)(block.size() - sizeof(quint16)); sok->write(block); } 3. вызов функций производится из приложения не Qt, в итоге слот onReadyRead() не срабатывает, если EXPORT void sokConnect() { int argc = 0; App = new QCoreApplication(argc, 0); sok = new QTcpSocket(); sok->connectToHost(addr, 5588); sendCmd(); App->exec(); } то команда доходит и слот вызывается. Пробовал в поток запихивать App->exec(); но тогда при вызове sendCmd(); ничего не происходит Может у кого есть рабочий вариант? Заранее благодарен! Название: Re: DLL + QTcpSocket вызов из не QT приложения (обработка сообщений) Отправлено: mutineer от Июнь 18, 2013, 11:22 Какие-то обрывки непонятные
Название: Re: DLL + QTcpSocket вызов из не QT приложения (обработка сообщений) Отправлено: mos4ever от Июнь 18, 2013, 11:25 Какие-то обрывки непонятные А что непонятное, я напишу еще объяснение... Название: Re: DLL + QTcpSocket вызов из не QT приложения (обработка сообщений) Отправлено: mutineer от Июнь 18, 2013, 11:33 Не очень понятно что откуда вызывается и где не работает
Название: Re: DLL + QTcpSocket вызов из не QT приложения (обработка сообщений) Отправлено: mos4ever от Июнь 18, 2013, 11:42 В Qt приложении создан QTcpServer
DLL с функциями отправки команд серверу Вызывает эти функции из DLL приложение не QT, т.к. QTcpServer работает с сигналом connect(server, SIGNAL(readyRead()), SLOT(onReadyRead())); в DLL и стороннем приложении система сигналов и слотов не поддерживается, поэтому при вызове функции sendCmd сигнал до сервера не доходит, за это отвечает QCoreApplication::exec(); но мне зацикливать функцию нельзя, т.к. команда для отправки серверу не одна Название: Re: DLL + QTcpSocket вызов из не QT приложения (обработка сообщений) Отправлено: Old от Июнь 18, 2013, 11:46 Посмотрите на метод waitForBytesWritten
Название: Re: DLL + QTcpSocket вызов из не QT приложения (обработка сообщений) Отправлено: mos4ever от Июнь 18, 2013, 12:00 СПАСИБО ОГРОМНОЕ - ДВА ДНЯ МУЧАЛСЯ С ПОТОКАМИ!!!
|