c++ - lib - pidgin facebook messenger
Libpurple no puede conectarse-purple_presence_is_online falló (4)
¿Por qué no usar una biblioteca cliente XMPP simple como GLOOX ( http://camaya.net/gloox ) en lugar de libPurple? GLOOX es una biblioteca multiplataforma que no necesita CYGWIN en Windows para compilar. Y está completa, proporcionando implementación para todas las estensiones de XMPP.
Sin embargo, si desea conectarse a otras redes que no sean XMPP como Yahoo, Facebook, entonces libPurple definitivamente será la respuesta.
Me estoy escribiendo un pequeño cliente jabber. He usado código de Libpurple.com y en Linux (Mint) todo funciona bien. Con las bibliotecas enlazadas el programa compila sin errores y recibe mensajes.
Pero cuando uso el mismo código en Windows 7, vinculo todas las bibliotecas necesarias y con Cygwin instalado y PATH set, el programa compila sin errores, pero luego NetBeans (IDE que uso en Windows y Linux) dice "RUN FAILED"
Cuando ejecuto el programa desde la línea de comandos de Windows dice:
libpurple initialized. Running version 2.10.7.
** <myclient.exe:6500>: CRITICAL **: purple_presence_is_online: assertion ''presence != NULL'' failed
y luego se congela. Ya intenté volver a libpurple 2.10.3 (la versión que tengo en Linux) pero sigue siendo la misma. Apagar el firewall tampoco ayudó.
Algunas cosas a tener en cuenta:
Cada sistema operativo tiene sus propios problemas cuando se implementa un programa. Entonces, ignora el hecho de que tu cliente está trabajando en Linux. Comience con el hecho de que su programa / libpurple no funcionó en Windows.
Trate de ver si hay un cliente (pidgin, etc.) que usa la misma ruta de código (la función donde falla la aserción), y tiene éxito. Esto es para hacer una comprobación de seguridad básica de que el código libpurple es de hecho utilizable en ese entorno (Cygwin)
Si hay algún tráfico entre su cliente y el servidor, intente obtener un volcado de tráfico de Wirehark y compárelo entre el entorno operativo (Linux) y el que falla (Cygwin).
Debido a que su problema es difícil de reproducir, sugeriría que use el depurador para investigar de dónde proviene ese puntero de "presencia" y qué bloque de código lo establece en NULL. Luego puedes preguntar "porque purple_stupid_function () devuelve un puntero NULO", que es mucho más fácil de responder.
La última vez que miré LibPurple (hace años) solo pude hacer que funcionara con MinGW, no con Cygwin.