VS2010编译thrift

来源:互联网 发布:乐视视频客户端mac 编辑:程序博客网 时间:2024/05/17 01:23

VS2010编译thrift

声明:这个都是在网上查找的资料,整理出来的

1、下载OPENSSL最新版本,下载地址http://www.openssl.org/source/,openssl似乎不需要编译。

2、下载libevent-2.0.13-stable或以上版本,下载地址:http://libevent.org/old-releases.html#2.0,为什么要下载这个版本下面会有说明。

3、VS2010编译libevent,详细请看:http://www.cnblogs.com/yanzhenan/archive/2011/12/05/2276781.html。

  1>进入VS2010命令提示

  2>cd libevent-2.0.16-stable

  3>nmake /f Makefile.nmake

  编译成功生成: libevent.lib          libevent_core.lib     libevent_extras.lib

4、thrift编译,下载地址:http://thrift.apache.org/download/, 我下载的是:thrift-0.8.0

引用:

Thrift的C++版本,在win下编译很麻烦。过程:
1.svn下载thrift。你首先要学习,什么是svn(svn类似ftp)。接着,要去找svn客户端(类似FlashFXP  
)。
2.下载完成后,在目录里找到 thrift\lib\cpp,里面有两个VS工程,一个是libthrift,提供基本服务端功能,另一个是libthriftnb。提供高级服务端功能,比如异步支持。
3.当前版本0.9.0,但任然需要修改thrift里的部分代码,才能让它在win里运行。具体代码包请加群193713524,里面有几个大牛有已经改好的,工作日在群里多找几个时间问一下。当然,自己改也行,但需要找很多个帖子,不断尝试才行,因为有些帖子给出的修改方案并不可取。
4.接下来,需要使用thrift的依赖库。有两个,boost和libevent。这两个依赖库有很多版本,具体需要哪个版本,在thrift和thriftnb工程->属性->VC++目录->包含目录  里可以看到。由于boost库编译后的lib,我死活用不了,而且libevent不需要编译,只需要进行include就行。因此,我的建议是,只下载 boost和libevent,在编译时,会提示缺少 boost的lib,然后直接在网上下载编译好的 boost lib,有好几个。

5.把这两个库加入到thrift和thriftnb工程里后,就可以进行编译了。要注意的是,你打开vs后,应该只有一个解决方案,这个解决方案里,有两个项目,一个是thrift,另一个是thriftnb。编译时,要对解决方案进行生成,而不是对项目进行生成。如果只对项目进行生成,则可能会造成生成第二个项目时,会把第一个项目产生的lib给删掉。另一个,thrift有4个版本,win32_debug,win32_debug_mt,x64_release,x64_release_mt,我建议都编译。最后编译出来,要用的是lib库,和用于调试的pdb文件,release版本是没有也不需要pdb的,只有debug版本才需要pdb.

6.接着谈别的语言。由于目前0.9.0并不是正式版本,所以thrift文档里提到的功能,并不是每一个语言都支持,实际情况是,每一种语言支持的协议和服务端模式都少得可怜。而且有些功能还有bug,比如C++的thrift的保存为文件功能,就有bug。不过通信功能还是没有问题的。

7.最后需要注意一个地方就是,thrift的string是utf-8的。对于java或c#这种语言,当然不是问题,但c++处理utf-8是有点麻烦的,做过的朋友不怕,没做过的,可能需要去专门补上几课:编码是什么?如何用vc++处理ansi/宽字符/Unicode/utf-8/utf-16/gbk,以及之间的互相转换等等,非常麻烦。

8.上面罗嗦了一堆,其实一句话可以解决上面所有问题,就是直接在工作日,在那个群里,多吼几次,跪求高手的已经搞好的现成的库、包以及示范工程,这样就可以节约非常多的时间。同时也感谢那个群里热心的大牛们,帮我搞通了这些问题。

5、需要补充说明一下:根据:“thrift和thriftnb工程->属性->VC++目录->包含目录”配置自己的附加目录

原创粉丝点击