libjingleを使える環境を整えてみた

VC++2005で。
多分これでイケる。
C言語に関しても解らないけど、VisualStudioの使い方も解らない。
 
libjingleの使い方については、おいおい調べる。
P2PでNAT越えしたいんだよおおお。
Google先生に感謝。
 
朝だ…、もう1日位休みが欲しい気分。
 

Windows Platform SDKをインストール

この辺を参考に。
 
Visual C++ Express Editionを使ってみる(Windows Platform SDK編)
http://freepg.fc2web.com/cpp/topic_vce_001.html
 

Expatをインストール

今の所、2.0.1が最新らしいけど、ディレクトリ構成がなんか違うから2.0.0を使う。
 
ここからダウンロード。
 
Browse Expat XML Parser Files on SourceForge.net
http://sourceforge.net/projects/expat/files/expat_win32/
 
環境設定はlibjingle内に入ってるREADME.winを参考に。

4. Update the Visual C++ directories in the Projects and Solutions section in the Options dialog box
   Library files: C:\expat-VERSION\StaticLibs
   Include files: C:\expat-VERSION\Source\Lib
   where VERSION is the version of expat you've downoaded

 
オプション->プロジェクトおよびソリューション->VC++ディレクトリ->ライブラリファイル

C:\Expat 2.0.0\StaticLibs

 
オプション->プロジェクトおよびソリューション->VC++ディレクトリ->インクルードファイル

C:\Expat 2.0.0\Source\Lib

 

libjingle.libをコンパイル

libjingle-0.4.0.zipをダウンロード

ここからダウンロード。
 
libjingle - Project Hosting on Google Code
http://code.google.com/p/libjingle/
 
とりあえず、D:\mydocument2\libjingle-0.4.0に解凍しとく。
 

修正

VoiceEngine Liteを入れない場合。
多分、VoiceEngine Liteっていう奴は有料。
それともただ見つからないだけ?
探しまくって行き着いた先が中華サイトだったから、多分無料じゃない。
 
talk\libjingle.slnを開く。
ソリューションエクスプローラで、以下ディレクトリ削除。

libjingle->Header Files->session->phone
libjingle->Source Files->session->phone

 

コンパイル

ソリューションエクスプローラ->libjingle->右クリック->プロジェクトのみ->libjingleのみをビルド
 
付属のサンプルもコンパイルする場合は以下。
ソリューションエクスプローラ->pcp->右クリック->プロジェクトのみ->pcpのみをビルド
 
callはVoiceEngine Liteが必要だからコンパイルできない。
 

環境設定

自分で新たに作る時の為の環境設定。
以下を追加。
 
オプション->プロジェクトおよびソリューション->VC++ディレクトリ->ライブラリファイル

D:\mydocument2\libjingle-0.4.0\talk\Debug

 
オプション->プロジェクトおよびソリューション->VC++ディレクトリ->インクルードファイル

D:\mydocument2\libjingle-0.4.0

 

サンプルを新たにコンパイル

とりあえず、includeしてエラーが出ない所まで。
大半をpcpからコピーした。
 

プロジェクト作成

新しいアプリケーション->Visual C++->Win32->コンソールアプリケーション
プロジェクト名 = libjingle_test
空のプロジェクト = true
 

ソース追加

ソリューションエクスプローラ->libjingle_test->ソースファイル->右クリック->追加->新しい項目
Visual C++->コード->C++ファイル (.cpp)
ファイル名 = main.cpp

#include <iomanip>
#include <time.h>

#ifndef WIN32
#include <sys/types.h>
#include <sys/stat.h>
#include <unistd.h>
#include <iomanip>
#include <sys/ioctl.h>
#include <sys/types.h>
#include <sys/wait.h>
#else
#include <direct.h>
//typedef _getcwd getcwd;
#include "talk/base/win32.h"
#endif

#include "talk/base/fileutils.h"
#include "talk/base/pathutils.h"
#include "talk/base/helpers.h"
#include "talk/base/httpclient.h"
#include "talk/base/logging.h"
#include "talk/base/physicalsocketserver.h"
#include "talk/base/ssladapter.h"
#include "talk/xmpp/xmppclientsettings.h"
#include "talk/examples/login/xmppthread.h"
#include "talk/examples/login/xmppauth.h"
#include "talk/p2p/client/httpportallocator.h"
#include "talk/p2p/client/sessionmanagertask.h"
#include "talk/session/fileshare/fileshare.h"
#include "talk/examples/login/presencepushtask.h"
#include "talk/examples/login/presenceouttask.h"
#include "talk/examples/login/jingleinfotask.h"

int main(int argc, char **argv) {
  talk_base::PhysicalSocketServer ss;

  printf("libjingle_test!!!\n");
  return 0;
}

 

プリプロセッサの定義

プロパティ->構成プロパティ->C++->プリプロセッサ->プリプロセッサの定義

WIN32
_DEBUG
_CONSOLE
_WINDOWS
UNICODE
_UNICODE
WINVER=0x0500
_WIN32_WINNT=0x500
PRODUCTION_BUILD
PRODUCTION
XML_STATIC
FEATURE_ENABLE_SSL
FEATURE_ENABLE_CHAT_ARCHIVING
FEATURE_ENABLE_VOICEMAIL

 

追加の依存ファイル

プロパティ->構成プロパティ->リンカ->入力->追加の依存ファイル

comsupp.lib
secur32.lib
ws2_32.lib
libexpatMT.lib
Iphlpapi.lib
crypt32.lib
libjingle.lib

 

ランタイムライブラリ

プロパティ->構成プロパティ->C/C++->コード生成->ランタイムライブラリ

マルチスレッド デバッグ (/MTd)

 

コンパイル

ソリューションエクスプローラ->libjingle_test->右クリック->ビルド