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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: [ПРОБЛЕМА] переход на 5.5 QXMPP  (Прочитано 4471 раз)
WILY
Гость
« : Август 04, 2015, 15:26 »

Добрый день, пытаюсь перенести работающий проект на новую платформ, но столкнулся с рядом проблем.
Честно признаюсь писал код не я (пришел на работу мне сказали, на держи, и делай), а кто писал уже никто не помнит, и вообще не факто что кто-то писал.
Есть джаббер сервер, и библиотечка QXMPP вот в ней, при сборке он выводит ошибку.

E:\****\QXMPP\QXmppInvokable.cpp:60: ошибка: cannot call member function 'void* QMetaType::construct(void*, const void*) const' without object

void *result = QMetaType::construct(resultType, 0);

Все это ссылается на вот эту строку
Код:
 void *result = QMetaType::construct(resultType, 0);
может кто-нибудь уже сталкивался с данной проблемой при переходе?
Всем черепашек
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #1 : Август 04, 2015, 15:29 »

Ты бы версию QXMPP привел для начала.
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
Old
Джедай : наставник для всех
*******
Online Online

Сообщений: 4349



Просмотр профиля
« Ответ #2 : Август 04, 2015, 15:32 »

Все это ссылается на вот эту строку
Код:
 void *result = QMetaType::construct(resultType, 0);
А так?
Код
C++ (Qt)
void *result = QMetaType::construct(resultType, 0, 0);
Записан
__Heaven__
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2130



Просмотр профиля
« Ответ #3 : Август 04, 2015, 15:42 »

Вас просят не вызывать методы класса без экземпляра класса.
Как написал Old, используйте статические методы.
Из документации:
Код
C++ (Qt)
void * QMetaType::construct(void * where, const void * copy = 0) const;
void * QMetaType::construct(int type, void * where, const void * copy); // static
Записан
WILY
Гость
« Ответ #4 : Август 04, 2015, 15:43 »

Все это ссылается на вот эту строку
Код:
 void *result = QMetaType::construct(resultType, 0);
А так?
Код
C++ (Qt)
void *result = QMetaType::construct(resultType, 0, 0);


Гранд мерси! Снимаю шляпу, ошибка пропала)



А может кто-нибудь знает тогда и следующую ошибку?

E:\*****\QXMPP\QXmppInvokable.cpp:113: ошибка: 'class QMetaMethod' has no member named 'signature'
         QByteArray signature = metaObject()->method(idx).signature();

Ссылается на следующую строку

Код:
QByteArray signature = metaObject()->method(idx).signature();

А по поводу версии, там в шапке вот что

 * This file is a part of QXmpp library.
 *
 * This library is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Lesser General Public
 * License as published by the Free Software Foundation; either
 * version 2.1 of the License, or (at your option) any later version.
Записан
Old
Джедай : наставник для всех
*******
Online Online

Сообщений: 4349



Просмотр профиля
« Ответ #5 : Август 04, 2015, 15:49 »

Код
C++ (Qt)
QByteArray signature = metaObject()->method(idx).methodSignature();
Записан
WILY
Гость
« Ответ #6 : Август 04, 2015, 16:24 »

Хорошей кармы тебе человек!
Ура, заработало! .... Почти) вылезли новые ошибки, пойду новые темы создавать.

Вам поклон глубочайший)
Записан
WILY
Гость
« Ответ #7 : Август 04, 2015, 16:34 »

а нет, проблема все таки есть
вот тут
Код
C++ (Qt)
   quint8 reserved, protocol;
   quint16 rawPort;
   stream >> reserved;
   stream >> protocol;
   stream >> rawPort;

ошибка

E:\***********\QXMPP\QXmppStun.cpp:102: ошибка: no match for 'operator>>' (operand types are 'QDataStream' and 'quint8 {aka unsigned char}')
     stream >> reserved;
            ^

Почитал документацию, вроде все отлично


Может кто-то встречался?
« Последнее редактирование: Август 04, 2015, 16:36 от WILY » Записан
Fat-Zer
Гость
« Ответ #8 : Август 04, 2015, 16:53 »

E:\***********\QXMPP\QXmppStun.cpp:102: ошибка: no match for 'operator>>' (operand types are 'QDataStream' and 'quint8 {aka unsigned char}')
     stream >> reserved;
Вангую, что QDataStream не включён...

Вообще говоря, QXMPP уже портирован на пятёрку... так что апстриме в помощь: https://github.com/qxmpp-project/qxmpp/
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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