C++ Libpurple罐';t连接-紫色显示联机失败

C++ Libpurple罐';t连接-紫色显示联机失败,c++,windows,instant-messaging,libpurple,C++,Windows,Instant Messaging,Libpurple,我给自己写了一封简短的客户信。我使用了Linux(Mint)上的代码,一切正常。与库链接的程序编译没有错误,并接收消息 但当我在Windows7上使用相同的代码,链接所有必要的库,安装Cygwin并设置路径时,程序编译没有错误,但NetBeans(我在Windows和Linux中使用的IDE)说“运行失败” 当我从windows命令行运行程序时,它会显示: libpurple initialized. Running version 2.10.7. ** <myclient.exe:650

我给自己写了一封简短的客户信。我使用了Linux(Mint)上的代码,一切正常。与库链接的程序编译没有错误,并接收消息

但当我在Windows7上使用相同的代码,链接所有必要的库,安装Cygwin并设置路径时,程序编译没有错误,但NetBeans(我在Windows和Linux中使用的IDE)说“运行失败”

当我从windows命令行运行程序时,它会显示:

libpurple initialized. Running version 2.10.7.
** <myclient.exe:6500>: CRITICAL **: purple_presence_is_online: assertion 'presence != NULL' failed
libpurple已初始化。运行版本2.10.7。
**:CRITICAL**:purple\u presence\u is\u online:assertion'presence!=“NULL”失败

然后它冻结了。我已经尝试返回到libpurple 2.10.3(我在Linux中的版本),但仍然是一样的。关闭防火墙也没有帮助。

为什么不使用一个简单的XMPP客户端库,比如GLOOX()而不是libPurple呢。GLOOX是一个跨平台库,不需要在Windows上使用CYGWIN进行编译。以及它的完整性,为所有essentail XMPP扩展提供了实现


然而,如果你想连接到其他非XMPP网络,如雅虎、Facebook,那么libPurple肯定是答案

由于您的问题很难重现,我建议您使用调试器来调查“presence”指针的来源,以及哪个代码块将其设置为NULL。然后你可以问“为什么紫色函数()返回空指针”,这更容易回答。

上次我看LibPurple时(几年前),我只能让它与MinGW一起工作,而不是与Cygwin一起工作。

需要注意的几点:

  • 部署程序时,每个操作系统都有自己的问题。因此,忽略您的客户机正在Linux中工作这一事实。首先,您的程序/libpurple无法在Windows中运行

  • 尝试查看是否有一个客户端(pidgin等)使用相同的代码路径(断言失败的函数)并成功。这是为了进行基本的健全性检查,以确保libpurple代码在该环境中实际可用(Cygwin)

  • 如果您的客户端和服务器之间存在任何流量,请尝试获取wireshark流量转储,并将其在工作(Linux)和失败(Cygwin)环境中进行比较


  • 您应该启用日志记录功能()并尝试找出为什么purple_presence_在线获取空ptr您将不得不发布更多信息。不同的环境可能会带来竞争条件或其他问题。显然,Libpurve并没有达到你所期望的状态,你需要看看有什么需要保护它。@Industrial抗抑郁药我该怎么做?我在我的主函数中添加了
    purple\u debug\u set\u enabled(TRUE)
    ,但没有在输出中添加任何调试信息。您发布的链接显示了我如何记录自己的调试消息…但这不是我需要的,是吗?您确实需要提供更多信息。除了“在myclient.exe:6500上,状态为空”之外,我们没有太多的事情要做。您的windows 7防火墙打开了吗?