2013-05-05 6 views
29

私は自分自身に小さなジャバークライアントを書いています。私はLibpurple.comのコードを使用しており、Linux(Mint)ではすべて正常に動作します。リンクされたライブラリでは、プログラムはエラーなしでコンパイルされ、メッセージを受信します。Libpurpleが接続できません - purple_presence_is_onlineが失敗しました

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で持っているバージョン)に戻りましたが、それでも同じです。ファイアウォールをオフにしても助けられませんでした。

+3

あなたはロギング機能(https://developer.pidgin.im/wiki/CHowTo/DebugAPIHowTo)を有効にして、あなたはより多くの情報を掲載する必要があるとしている –

+1

purple_presence_is_onlineがNULLのPTRを得た理由を見つけるようにしてください。異なる環境で競合状態やその他の問題が発生する可能性があります。明らかにlibpurpleはあなたが期待している状態ではなく、あなたはそれを保護するために何がガーデニングが必要かを見なければならないでしょう。 –

+0

@ Industrial-antidepressantどうすればよいですか?私は 'purple_debug_set_enabled(TRUE)'を私のメイン関数に追加しましたが、出力には一つのデバッグ情報しか追加しませんでした。投稿したリンクは、自分のデバッグメッセージをどのように記録できるかを示しています...しかし、それは私が必要とするものではありません。 – user1023979

答えて

0

libPurpleの代わりにGLOOX(http://camaya.net/gloox)のような単純なXMPPクライアントライブラリを使用してみませんか? GLOOXは、WindowsでCYGWINをコンパイルする必要のないクロスプラットフォームのライブラリです。そして、その完全な、すべてのessentail XMPPエストレインの実装を提供します。

しかし、Yahoo、Facebookなどの他の非XMPPネットワークに接続したい場合は、libPurpleが確実に答えになります。

0

問題を再現するのは難しいので、デバッガを使用して "存在"ポインタがどこから来たのか、どのコードブロックがNULLに設定されているのかを調べることをお勧めします。次に、 "purple_stupid_function()がなぜNULLポインタを返すのか"を尋ねると、これははるかに簡単に答えることができます。

0

LibPurple(前年)を最後に見たとき、私はCygwinではなくMinGWでしか動作させることができませんでした。注意すべき

1

いくつかのこと:

  1. 各OSのプログラムが展開されたときに、独自の問題があります。したがって、クライアントがLinuxで作業しているという事実を無視してください。あなたのプログラム/ libpurpleがWindowsで動作しなかったという事実から始めましょう。

  2. 同じコードパス(アサーションが失敗する関数)を使用し、成功したクライアント(pidginなど)が存在するかどうかを確認してください。これは、libpurpleコードが実際にその環境(Cygwin)で利用可能であるという基本的な正当性チェックを行うことです(Cygwin)

  3. クライアントとサーバの間にトラフィックがある場合は、wiresharkトラフィックダンプを取得して、 (Linux)と失敗している(Cygwin)環境です。