`

Step by Step about How to Build libjingle 0.4

阅读更多
1. Download and Install Visual C++ 2010 Express
http://www.microsoft.com/express/Downloads/#2010-Visual-CPP

2. Download and install binary package for Expat
http://sourceforge.net/projects/expat/files/expat_win32/
Currently the latest version is 2.0.1, which is my selection.

After installed, remember the below two directories:
Header file diretory: C:\Program Files (x86)\Expat 2.0.1\Source\lib
Lib file directory: C:\Program Files (x86)\Expat 2.0.1\Bin

3. Download the libjingle 0.4 zip and unzip it

http://libjingle.googlecode.com/files/libjingle-0.4.0.zip

4. Open the solution with Visual C++ 2010 Express
Open Visual C++ 2010 Express, click File->Open->Project/Solution, select talk/libjincle.sln, it will prompt solution conversion, continue. Now you may see there are three projects in the solution.


5. Configure the Expat directories for the solution
Right click "libjingle" project in the Solution Explorer, select Properties, and config the VC++ Diretories as the below:
Include Directories: C:\Program Files (x86)\Expat 2.0.1\Source\lib
Library Directories: C:\Program Files (x86)\Expat 2.0.1\Bin


6. Build the libjingle project

Right click "libjingle" project in the Solution Explorer, select Build. The build will start.
After build finished, you will find build failure with the below error information:
gipslitemediaengine.h(33): fatal error C1083: Cannot open include file: 'talk/third_party/gips/Interface/GipsVoiceEngineLite.h': No such file or directory
1>  gipslitemediaengine.cc


Don't worry. It is because on Windows the project depend on GIPS voice engine. Since we don't care the voice call now, so select all files on Source Files->session->phone, right click and select Exclude From Project. Build again. This time you will make build successfully.
And you may find the generated talk\Debug\libjingle.lib.

7. Build pcp project.

Configure the he Expat directories for this project as step 5. You will make build successfully. And you may find the generated talk\Debug\pcp.exe.

8. Test receiving file.
Run the below command:
pcp

Then send a file to this gmail account from Google Talk client with another account.


9. Test sending file.
Run the below command:
pcp 01.jpg lisi.android@gmail.com

Then accept the file from Google Talk client with the recepient account.


At last,
You may try the attached binary pcp.exe for the test.
And in fact, for Expat XML Parser, you don't need install it, only expat.h/expat_external.h and libexpatMT.lib are needed, which I have attached.

  • 大小: 6.5 KB
  • 大小: 68.3 KB
  • 大小: 32.3 KB
  • 大小: 34.7 KB
  • pcp.rar (686.3 KB)
  • 下载次数: 21
分享到:
评论
3 楼 zee3.lin 2015-04-27  
Sorry~~
When I build "call" project ,I have some compiler error.
Could you please help to provide the solution for me reference?
below is my error message.
=====================================================================
callclient.obj : error LNK2019: unresolved external symbol "public: void __thiscall cricket::Call::Mute(bool)" (?Mute@Call@cricket@@QAEX_N@Z) referenced in function "public: void __thiscall CallClient::ParseLine(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &)" (?ParseLine@CallClient@@QAEXABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z)
callclient.obj : error LNK2019: unresolved external symbol "public: void __thiscall cricket::Call::Terminate(void)" (?Terminate@Call@cricket@@QAEXXZ) referenced in function "public: void __thiscall CallClient::ParseLine(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &)" (?ParseLine@CallClient@@QAEXABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z)
callclient.obj : error LNK2019: unresolved external symbol "public: void __thiscall cricket::Call::RejectSession(class cricket::Session *)" (?RejectSession@Call@cricket@@QAEXPAVSession@2@@Z) referenced in function "public: void __thiscall CallClient::ParseLine(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &)" (?ParseLine@CallClient@@QAEXABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z)
callclient.obj : error LNK2019: unresolved external symbol "public: void __thiscall cricket::PhoneSessionClient::SetFocus(class cricket::Call *)" (?SetFocus@PhoneSessionClient@cricket@@QAEXPAVCall@2@@Z) referenced in function "public: void __thiscall CallClient::ParseLine(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &)" (?ParseLine@CallClient@@QAEXABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z)
callclient.obj : error LNK2019: unresolved external symbol "public: void __thiscall cricket::Call::AcceptSession(class cricket::Session *)" (?AcceptSession@Call@cricket@@QAEXPAVSession@2@@Z) referenced in function "public: void __thiscall CallClient::ParseLine(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &)" (?ParseLine@CallClient@@QAEXABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z)
callclient.obj : error LNK2019: unresolved external symbol "public: class std::vector<class cricket::Session *,class std::allocator<class cricket::Session *> > const & __thiscall cricket::Call::sessions(void)" (?sessions@Call@cricket@@QAEABV?$vector@PAVSession@cricket@@V?$allocator@PAVSession@cricket@@@std@@@std@@XZ) referenced in function "public: void __thiscall CallClient::ParseLine(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &)" (?ParseLine@CallClient@@QAEXABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z)
callclient.obj : error LNK2019: unresolved external symbol "public: __thiscall cricket::PhoneSessionClient::PhoneSessionClient(class buzz::Jid const &,class cricket::SessionManager *)" (??0PhoneSessionClient@cricket@@QAE@ABVJid@buzz@@PAVSessionManager@1@@Z) referenced in function "private: void __thiscall CallClient::InitPhone(void)" (?InitPhone@CallClient@@AAEXXZ)
callclient.obj : error LNK2019: unresolved external symbol "public: class cricket::Session * __thiscall cricket::Call::InitiateSession(class buzz::Jid const &,class std::vector<class buzz::XmlElement *,class std::allocator<class buzz::XmlElement *> > *)" (?InitiateSession@Call@cricket@@QAEPAVSession@2@ABVJid@buzz@@PAV?$vector@PAVXmlElement@buzz@@V?$allocator@PAVXmlElement@buzz@@@std@@@std@@@Z) referenced in function "public: void __thiscall CallClient::MakeCallTo(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &)" (?MakeCallTo@CallClient@@QAEXABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z)
callclient.obj : error LNK2019: unresolved external symbol "public: class cricket::Call * __thiscall cricket::PhoneSessionClient::CreateCall(void)" (?CreateCall@PhoneSessionClient@cricket@@QAEPAVCall@2@XZ) referenced in function "public: void __thiscall CallClient::MakeCallTo(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &)" (?MakeCallTo@CallClient@@QAEXABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z)
===================================================================
My develop environment:
libjingle-0.4.0
vs 2010

Thank you very much.
2 楼 laiyangdeli 2011-02-15  
Build 'call' example:
1. 添加libexpatMT.lib的路径
2. 去掉gipsvoiceenginelite.lib, 改为mediastreamer2.lib, 并添加mediastreamer2.lib的路径
3. 添加ortp.lib, 并添加ortp.lib的路径. 注意在生成ortp.lib时候, 需要更改ortp.def, 添加下面全局变量的定义以便导出到lib中
   payload_type_pcmu8000
   ...
   payload_type_telephone_event
   av_profile
1 楼 laiyangdeli 2011-02-15  
talk\third_party创建expat目录, 在expat目录下, 创建include目录, 拷贝expat.h和expat_external.h; 创建lib目录, 拷贝libexpatMT.lib
加include路径到工程中

talk\third_party创建glib目录, 在glib目录下, 创建include目录, 拷贝glib的头文件以及glibconfig.h; 创建lib目录, 拷贝glib的lib
加include路径到工程中

talk\third_party创建ortp目录, 在ortp目录下, 创建include目录, 拷贝ortp的头文件; 创建lib目录, 拷贝ortp的lib
加include路径到工程中

talk\third_party创建mediastreamer2目录, 在mediastreamer2目录下, 创建include目录, 拷贝mediastreamer2的头文件; 创建lib目录, 拷贝mediastreamer2的lib
加include路径到工程中

在linphonemediaengine.cc
#include "talk/third_party/mediastreamer/mediastream.h"
改为
#include "mediastreamer2/mediastream.h"

注释掉
#include "talk/third_party/mediastreamer/msspeexdec.h"

注释掉
#include <netdb.h>
#include <unistd.h>

将speex_wb改为payload_type_speex_wb
将pcmu8000改为payload_type_pcmu8000
将telephone_event改为payload_type_telephone_event

注释掉
static void null_log_handler(const gchar *log_domain,
          GLogLevelFlags log_level,
     const gchar *message,
     gpointer user_data) {
  LOG(LS_INFO) << log_domain << " " << message;
}
g_log_set_handler("MediaStreamer", G_LOG_LEVEL_MASK, null_log_handler, this);
g_log_set_handler("oRTP", G_LOG_LEVEL_MASK, null_log_handler, this);
g_log_set_handler("oRTP-stats", G_LOG_LEVEL_MASK, null_log_handler, this);

ms_speex_codec_init();


audio_stream_ = audio_stream_start(&av_profile, 2000, "127.0.0.1", 3000, i->id, 250);
改为
audio_stream_ = audio_stream_start(&av_profile, 2000, "127.0.0.1", 3000, i->id, 250, true);


1>  linphonemediaengine.cc
1>c:\program files (x86)\microsoft sdks\windows\v7.0a\include\wspiapi.h(48): error C2894: templates cannot be declared to have 'C' linkage

注释
// extern "C" {
// }



int LinphoneMediaChannel::GetOutputLevel() {return 0;}
int LinphoneMediaEngine::SetAudioOptions(int options) {return 0;}
int LinphoneMediaEngine::SetSoundDevices(int wave_in_device, int wave_out_device) {return 0;}
float LinphoneMediaEngine::GetCurrentQuality() {return 0;}
int LinphoneMediaEngine::GetInputLevel() {return 0;}

linphonemediaengine.h
注释
// extern "C" {
// }

#include "talk/third_party/mediastreamer/mediastream.h"
改为
#include "mediastreamer2/mediastream.h"

相关推荐

    VS2010编译libjingle0.6.2步骤

    VS2010 编译 libjingle0.6.2 步骤 titre : VS2010 编译 libjingle0.6.2 步骤是指使用 Visual Studio 2010 将 libjingle 0.6.2 库编译的详细步骤。 描述:本文档将详细介绍如何在 VS2010 环境下编译 libjingle ...

    libjingle-0.5.1.zip

    1. **libjingle**:Libjingle是Google开发的一个开源C++库,主要用于实现P2P(peer-to-peer)通信,支持多种协议,包括XMPP(Extensible Messaging and Presence Protocol)和ICE(Interactive Connectivity ...

    带GIPS的libjingle source

    标题 "带GIPS的libjingle source" 指的是一个包含GIPS(Global IP Sound)技术的libjingle源代码库。libjingle是Google开发的一个开源项目,主要用于实现跨平台的实时通信(RTC)功能,特别是网络音视频通话。GIPS是...

    libjingle文档和0.4.0版本源码

    **libjingle** 是一个开源项目,由Google开发并维护,主要用于实现跨平台的实时通信(RTC)功能,包括音频、视频通话以及数据共享。它最初是为Google Talk服务设计的,现在已经成为WebRTC(Web Real-Time ...

    libjingle源码(linux版本)

    libjingle是Google开发的一个跨平台库,主要用于实现P2P(Peer-to-Peer)通信,它包含了音视频通话、即时消息等多种实时通信功能的实现。 描述中提到的“p2p技术实现”是指libjingle的核心功能,即通过P2P网络架构...

    libjingle0.6.14

    标题"libjingle0.6.14"指的是一个特定版本的libjingle库,这是Google开发的一个开源项目,主要用于实现P2P(Peer-to-Peer)通信。描述中的"libjingle0.6.14 版本,p2p学习"暗示了这个压缩包可能是为了学习libjingle...

    Libjingle 通过vs2005编译

    目前GOOGLECODE上的最新更新删除了libjingle.vcproj文件,采用scons脚本进行编译,增加了学习门槛,本次下载包增加了libjingle.vcproj文件并且已经通过了vs2005编译,方便大家学习使用。 Libjingle - Google Talk ...

    libjingle vs2010 编译通过

    libjingle是一个开源项目,由Google开发,主要用于实现网络音视频通信。这个项目的核心是提供一个跨平台的库,使得开发者能够轻松地在他们的应用程序中集成VoIP(Voice over IP)和视频聊天功能。在本案例中,我们...

    libjingle_peerconnection

    《深入理解libjingle_peerconnection:WebRTC的核心组件》 libjingle_peerconnection是Google开源项目WebRTC(Web Real-Time Communication)中的关键组件,它在实时通信领域扮演着至关重要的角色。WebRTC是一种...

    libjingle0.6.14编译好的.lib

    libjingle是一个开源的C++库,由Google开发,主要用于实现网络通信,特别是支持P2P(Peer-to-Peer)通信。P2P技术允许网络中的设备直接相互连接,而无需通过中心服务器,这在视频通话、文件共享等应用中非常常见。 ...

    libjingle的封装库

    在这个“libjingle的封装库”中,我们看到的是对原始libjingle库进行封装后的版本,旨在简化开发流程,让开发者更便捷地在自己的项目中集成libjingle的功能。 首先,让我们深入了解libjingle的核心组件和功能: 1....

    libjingle源码(含GIPS LITE)

    libjingle源码(含GIPS LITE),方便大家编译上传

    libjingle-0.6.2.

    Libjingle是Google提供的C++组件集,它为Google Talk的点对点通讯与语音呼叫功能提供交互操作性。组件包包括了Jingle和Jingle-Audio的google实现的源代码,它们是XMPP标准的推荐扩展,目前试验版可用。 我们发布此...

    libjingle在windows和ubuntu-linux上编译方法

    - 设置`PATH_TO_SWTOOLKIT`变量指向swtoolkit的目录:`set PATH_TO_SWTOOLKIT=C:\1-MyWork\libjingle\depends\swtoolkit\swtoolkit`。 - 更新`PATH`变量包含上述路径:`set PATH=%PYTHON%;%SCONS_DIR%;%PATH_TO_...

    android webrtc libjingle_peerconnection

    libjingle_peerconnection是Android WebRTC的核心库,提供了P2P(点对点)通信的基础框架,包括ICE(Interactive Connectivity Establishment)用于网络连接,STUN(Session Traversal Utilities for NAT)和TURN...

    基于海思芯片(ARM平台)的libjingle静态库(交叉编译).rar

    Libjingle是一个方便实现P2P传输的开源库,由google公司开发,并与2005年12月15日发布第一个版本,可以粗略的看成是Jingle协议的C++实现库(peakflys注:只是和Jingle协议非常相似,并不完全兼容,区别以后介绍),...

Global site tag (gtag.js) - Google Analytics