Libpurple не может подключиться — фиолетовый_presence_is_online не удалось

Я пишу себе небольшой клиент Jabber. Я использовал код из Libpurple.com а на линуксе (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), но все так же. Отключение брандмауэра тоже не помогло.

29

Решение

Несколько вещей, чтобы отметить:

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

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

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

1

Другие решения

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

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

0

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

0

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

0
По вопросам рекламы [email protected]