相信看到这篇博客的同学,一定已经在google上下载了libjingle的源代码,但是苦于编译连接不成功,偶然的机会接触到libjingle,闲暇的时候,我开始研究libjingle。但编译起来还是费了一些周折的,现在就都拿出来和大家分享一下。我使用的是libjingle-0.6.14。google提供使用score进行编译的方法。这在其readme文件中也已经有了说明。但是我试了很多次还是不能成功,最后在网上搜索了很长时间之后,才找到了解决的方法,现说明如下:
1、准备过程
下载libjingle-0.6.14、python2.7(只能使用2.4之后,3.0之前的版本,否则score不能支持)
下载scons,readme上说要2.0之后的,但是score2.1、2.2似乎都不能使用,只能用2.0的版本(这可能是因为google是基于scons2.0开发的swootlkit的缘故)
下载expat and srtp(都要是源码)
下载readme中其他相关软件
2、按照readme添加环境变量
3、按google的方法编译所有文件
4、用vs2008编译login例子
google提供了使用swootlkit生成vs工程文件的方法,但其内部还是使用的命令行swootlkit进行的编译
这里我新建了一个工程将例子login文件夹下的文件全部拷贝过去,在vs中设置include、lib包含目录指向libjingle-0.6.14的位置
根据bulid.scons中编译的命令
talk.App(env, name =
"login"
,
libs = [
"jingle"
,
"expat"
,
"xmpphelp"
,
],
srcs = [
"examples/login/xmppthread.cc"
,
"examples/login/login_main.cc"
,
],
posix_libs = [
"crypto"
,
"ssl"
,
],
lin_libs = [
"videorenderer"
,
],
)
可知,还需要包含库文件
"jingle"
,
"expat"
,
"xmpphelp"
,全部拷贝过去,并包含在工程中
另外,根据google,在vs中单独编译libjingle还需要ws2_32.lib、Secur32.lib、Crypt32.lib、Iphlpapi.lib四个库文件,全部包含进去
之后,在main.scons中发现如下代码
win_dbg_env.Prepend(
CCFLAGS = [
'/ZI'
, # enable debugging
'/Od'
, # disable optimizations
'/MTd'
, # link with LIBCMTD.LIB debug lib
'/RTC1'
, # enable runtime checks
],
)
可知,libjingle使用MTd模式编译,在vs中设置一下,并忽略libc.lib、libcmt.lib、msvcrt.lib、libcd.lib、msvcrtd.lib库
编译连接通过