如何建立乙個libjingle程式

2021-06-03 22:34:56 字數 2444 閱讀 7952

看文件看的有點迷糊,不如看下源**talk下example下的login例子的**很簡單。

std::cout << "auth cookie: ";

std::string auth_cookie;

std::getline(std::cin, auth_cookie);

std::cout << "user name: ";

std::string username;

std::getline(std::cin, username);

// start xmpp on a different thread

xmppthread thread;

thread.start();

buzz::xmppclientsettings xcs;

xcs.set_user(username.c_str());

xcs.set_host("gmail.com");

xcs.set_use_tls(buzz::tls_disabled);

xcs.set_auth_cookie(auth_cookie.c_str());

xcs.set_server(talk_base::socketaddress("talk.google.com", 5222));

thread.login(xcs);

// use main thread for console input

std::string line;

while (std::getline(std::cin, line))

return 0;

重點就是xmppclientsettings和xmppthread2個類的內容了。

檢視xmppclientsettings的定義,是xmppusersettings的子類,2個類好像都只是作為資料的封裝用。只有屬性,沒有實質性的行為。

不知道這裡set_host和set_server有啥區別。host和server不是同乙個東西嗎?

xmppthread是繼承自talk_base::thread, xmpppumpnotify, talk_base::messagehandler 的乙個實現。

login中呼叫了乙個post方法。不知道post方法是來自**的.post只是提交了乙個訊息。可能是系統自帶的吧。具體的login過程是寫在onmessage裡面的

xmppthread建立的時候就生成了乙個xmpppump類。呼叫xmpppump的dologin方法來完成基於xmpp協議的登入。

然後就是乙個接收訊息的迴圈。迴圈佔cpu啊。所以這個只是login的例子。

可恨的是這個例子也沒有是否登入成功的提示。。。好悲劇啊

我猜是否更新成功的提示是應該寫在onstatechange事件中的。例子中沒有實現。

寫了點**輸出這個狀態變數state。可是不管我賬戶和密碼是否對,只有124狀態,沒有3狀態啊。好像3狀態才是成功的。

enum state ;

可能需要ssl,可能。。。好吧。先這樣吧。

來看call的例子。試了下這個例子時能登入的。

而且,我承認這個例子已經很強大了。

2012-2-20今天看了下,0.6.13已經出來了。

想試著把例子call做成乙個vs專案。

編譯600多個錯誤

加上win32 環境定義 屬性設定,c/c++,preprocess,preprocess definitions裡加。

另外少了testing部分的**。可以先把相關的檔案去掉。。**應該是有的,路徑不對吧。好像hammer.bat能產生對應的lib庫。

後面有個str啥的undeclared的錯誤,是因為feature_enable_voicemail 沒加

具體可以看constrans.h裡的條件編譯**

然後出來很多的link錯誤,有300多個。根據經驗,這個當然是lib設定不對的問題咯

新增了lib路徑,linker裡加了對應的引用後。少了很多。

還有和msvcprtd.lib衝突的。在configuration properties -> linker -> ignore specific library"裡設定下

2012-2-21

然後繼續錯誤,根據錯誤google,新增winmm.lib  剩103錯誤

新增ws2_32.lib  剩26錯誤

新增crypt32.lib secur32.lib dnsapi.lib,剩10個錯誤

新增iphlpapi.lib 剩9個 。真鬱悶,少了這些lib有沒有更好的方法查呢。非得google?

突然想到檢視scons檔案。新增了strmiids.lib 剩7個

根據scons檔案的線索。發現要用/mt模式編譯

然後把前面ignore specific library 的lib去掉。ok成功了。。

小小的佩服下自己,不是只會google的小白了。搞了半天,可能是只有設定成mt模式,然後安裝scons的要求新增需要的lib就可以了。改天再試試看。

如何建立乙個模組 如何起步建立乙個童裝品牌?

自從有了童裝創業的想法,腦海中蹦出無數想法。從0到1建立乙個品牌,首先要問清楚自身,理想中這將是乙個怎樣的品牌?展示出來是怎樣的形象?希望消費者對品牌產生怎樣的感受?最終實現品牌的什麼目標?這些問題,並不是一開始就能確定答案,也不會是一成不變。我們應該從建立品牌,到運營 維護品牌,都對這些問題保持思...

如何建立乙個dblink

建立乙個dblink的詳細步驟 1 啟動伺服器資料庫 2 建立乙個本地net服務名 oracle oracle92 configuration and migration tools net configuration assistant 3 登入sqlplus 用本地帳戶登入 4 建立dblink...

如何建立乙個GitLab Web Hooks

git 能在特定的重要動作發生時觸發自定義的指令碼。這些指令碼都被儲存在 git 目錄下的 hooks 子目錄中 git hooks 當 git init 初始化乙個倉庫時,git 缺省會在這個目錄中放置一些示例指令碼。這些指令碼一般都是 shell 指令碼。不過自定義的可執行指令碼可以使用你喜歡的...