Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Проблема с QTcpSocket в dll, Помогите разобраться . 
:(
    Опции темы
Oceola
Дата 6.4.2010, 18:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 6.4.2010

Репутация: нет
Всего: нет



Есть вот такой класс в dll написанный на Qt 

Код

class LIBEN304SHARED_EXPORT LibEn304{
public:
    LibEn304();
    QTcpSocket *socket;
    QString reply;
    QTimer  * ReadTimer;
    void myconnect(void);
    void disconnect(void);
    int esyn(void);
    int asyn(void);
    void write(QString command);
    void read(void);
.................
};


чтобы передать некоторые функции из класса в Delphi  я написал внизу функции которые потом вызывается из делфей например вот

Код

LIBEN304SHARED_EXPORT  void myconnect()
{
  cppclass = new  LibEn304;
  cppclass->myconnect();
  cppclass->write("a syn");

}


Функции компилируются.
  Вызываются из делфей так

Код

    procedure myconnect();  cdecl;
     external 'libEn304.dll' name '_Z9myconnectv';
     function mywrite():integer;  cdecl;
     external 'libEn304.dll' name '_Z5writev';
     procedure myread(a :pChar);  cdecl;
     external 'libEn304.dll' name '_Z4readPc';
     procedure mydisconnect();  cdecl;
     external 'libEn304.dll' name '_Z10disconnectv';


Нормально пишут там всякие сообщения.

 При соединении с  сервером ,  сервер пишет что типо соединение произошло!

На посылку сообщений не выскакивает не каких ошибок.

но при этом
не каких сообщений до сервера не доходит(((((
и обратно не возвращается


Где искать проблему не понятно(( 
 
код приведенных выше 3х функций
Код

  LibEn304::LibEn304()
{
    qWarning("Start DLL");
}

 void LibEn304::myconnect()
{
    qWarning("Connect");
    socket = new QTcpSocket;
      socket->connectToHost("127.0.0.1",10000,QIODevice::ReadWrite);
       qWarning( socket->peerAddress().toString().toAscii());


}


 void LibEn304::write(QString command)
{
    qWarning("Write");
    socket->write((command+"\n").toAscii());
}





 
PM MAIL   Вверх
borisbn
Дата 6.4.2010, 19:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 4875
Регистрация: 6.2.2010
Где: Ростов-на-Дону

Репутация: 48
Всего: 135





--------------------
Женщины отличаются от программистов тем, что у них чары состоят из стрингов
PM MAIL Jabber   Вверх
Oceola
Дата 7.4.2010, 10:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 6.4.2010

Репутация: нет
Всего: нет



Извините ,я не матерый программист. Я чего то я там нечего не понял smile 

Получается  чтобы это сделать нужно в dll создать поток затем   создать объекты QCoreApplication и  QTCPSocket 

тогда заработает?))

Это сообщение отредактировал(а) Oceola - 7.4.2010, 10:17
PM MAIL   Вверх
borisbn
Дата 7.4.2010, 11:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 4875
Регистрация: 6.2.2010
Где: Ростов-на-Дону

Репутация: 48
Всего: 135



Цитата(Oceola @  7.4.2010,  10:07 Найти цитируемый пост)
Получается  чтобы это сделать нужно в dll создать поток затем   создать объекты QCoreApplication и  QTCPSocket тогда заработает?))

типа того. смотри, чтобы QTCPSocket умел получать и выдавать сообщения (сигналы), нужно, чтобы кто-то запустил цикл обработки сообщений. В Qt-приложении это делается в main:
Код

    QApplication a( argc, argv );
    MyWidget w;
    w.show();
    return a.exec(); // <- вот тут

в дульфёвом же приложении никто этот цикл не запускает, поэтому ты сам должен это сделать.


--------------------
Женщины отличаются от программистов тем, что у них чары состоят из стрингов
PM MAIL Jabber   Вверх
SanyaWanderer
Дата 24.12.2010, 11:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 24.12.2010

Репутация: нет
Всего: нет



Спасибо за пост!!!
Уже мозги сломал надо подобной проблемой, а теперь то все ясно!
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С/С++: Кроссплатформенное программирование, QT/Gtk+/wxWidgets"
JackYF
Любитель
  • В заголовке темы в квадратных скобках обозначьте используемую вами библиотеку, например: [QT],[GTK],[wx].
  • Если вопрос актуален только для некоторой версии библиотеки, либо, если вы пользуетесь не самой последней версией, укажите это. Например: [QT4], [GTK2].
  • Все начинающие изучать Qt - не забудьте зайти сюда.
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • В вопросе укажите полную версию версию библиотеки, а также все дополнительные используемые программные пакеты.
  • Не забывайте пользоваться кнопкой "Код".
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к тематике этого раздела. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, Любитель.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets | Следующая тема »


 




[ Время генерации скрипта: 0.0700 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.