29

我正在给自己写一个小型 jabber 客户端。我使用了来自Libpurple.com和 Linux (Mint) 的代码,一切正常。与库链接的程序编译没有错误并接收消息。

但是当我在 Windows 7 上使用相同的代码,链接所有必需的库并安装 Cygwin 并设置 PATH 时,程序编译没有错误,但是 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.3(我在 Linux 中拥有的版本),但还是一样。关闭防火墙也没有帮助。

4

4 回答 4

1

有几点需要注意:

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

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

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

于 2015-03-31T07:40:10.590 回答
0

为什么不使用像 GLOOX ( http://camaya.net/gloox ) 这样的简单 XMPP 客户端库来代替 libPurple。GLOOX 是一个跨平台库,在 Windows 上不需要 CYGWIN 编译。它是完整的,为所有基本的 XMPP 扩展提供了实现。

但是,如果您想连接到其他非 XMPP 网络,如 Yahoo、Facebook,那么 libPurple 肯定是答案。

于 2015-03-07T02:20:42.170 回答
0

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

于 2015-03-09T12:45:17.207 回答
0

上次我查看 LibPurple(几年前)时,我只能使用 MinGW,而不是 Cygwin。

于 2015-03-09T21:39:40.797 回答