有没有人在windows下,用VS2010成功运行过thrift的程序

 我来答
llzzcc66
2015-10-23 · 知道合伙人数码行家
llzzcc66
知道合伙人数码行家
采纳数:81385 获赞数:171484
公司运维员工

向TA提问 私信TA
展开全部
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.上面罗嗦了一堆,其实一句话可以解决上面所有问题,就是直接在工作日,在那个群里,多吼几次,跪求高手的已经搞好的现成的库、包以及示范工程,这样就可以节约非常多的时间。同时也感谢那个群里热心的大牛们,帮我搞通了这些问题。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式