Подтвердить что ты не робот

Libpurple не может подключиться - purple_presence_is_online не удалось

Я пишу себе маленький jabber-клиент. Я использовал код из Libpurple.com, а в Linux (Mint) все работает нормально. С библиотеками, связанными с компиляцией программ, без ошибок и приема сообщений.

Но когда я использую тот же код в Windows 7, связываю все необходимые библиотеки и устанавливая Cygwin и устанавливая PATH, компиляция программ без ошибок, но затем NetBeans (IDE, который я использую в Windows и Linux) говорит: "RUN FAILED"

Когда я запускаю программу из командной строки Windows, она говорит:

libpurple initialized. Running version 2.10.7.
** <myclient.exe:6500>: CRITICAL **: purple_presence_is_online: assertion 'presence != NULL' failed

а затем он замораживается. Я уже пробовал вернуться к libpurple 2.10.3 (версия, которую я имею в Linux), но все тот же. Выключение брандмауэра также не помогло.

4b9b3361

Ответ 1

Несколько заметок:

  • Каждая ОС имеет свои проблемы при развертывании программы. Поэтому игнорируйте тот факт, что ваш клиент работает в Linux. Начните с того, что ваша программа /libpurple не работала в Windows.

  • Попробуйте посмотреть, есть ли клиент (pidgin и т.д.), который использует тот же путь кода (функция, в которой это утверждение не выполняется), и преуспевает. Это делается для того, чтобы сделать базовую проверку здравомыслия, что код libpurple фактически используется в этой среде (Cygwin)

  • Если между вашим клиентом и сервером существует какой-либо трафик, попробуйте получить дамп трафика wirehark и сравните его между рабочей (Linux) и сбойной (Cygwin) средой.

Ответ 2

Почему бы не использовать простую клиентскую библиотеку XMPP, такую ​​как GLOOX (http://camaya.net/gloox) вместо libPurple. GLOOX - это кросс-платформенная библиотека, которая не нужна CYGWIN для Windows для компиляции. И его полная, обеспечивающая реализацию для всех Essentail XMPP.

Однако, если вы хотите подключиться к другим сетям, отличным от XMPP, таким как Yahoo, Facebook, то libPurple определенно будет ответом.

Ответ 3

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

Ответ 4

В прошлый раз, когда я смотрел LibPurple (годы назад), я мог работать только с MinGW, а не с Cygwin.