windows下VS2015搭建thrift(c++)

1、先官网下载thrift源码和 thrift-0.10.0.exe,我下载的0.10.0版本,下载后解压

2、进入lib/cpp目录,用vs2015打开sln项目,两个lib工程(1个阻塞的libthrift,另一个是非阻塞的libthriftnb)

3、先环境配置,选中项目,右键-管理NuGet程序包。如果用的阻塞的就只要添加boost和openssl就行,如果用非阻塞还得多加一个libevent的库,下载时选中和vc对应的库文件版本。

4、配置好后,直接生成项目,会生成libthrift.lib文件。

5、然后编写faceDector.thrift文件

namespace cpp faceDector
struct User{
    1:i64 id,
    2:string name,
    3:i32 age,
    4:bool vip

}
service FaceDector{
    i32 add(1:i32 a,2:i32 b)
    string faceDector(1:string username,2:string password)
}`

6、然后用命令行在gen-cpp文件夹下生成一堆h文件和cpp文件    命令(     thrift-0.10.0.exe -gen cpp faceDector.thrift   )

7、把生成的这一堆文件复制到建立server的空项目里面,同样的把boost和openssl的头文件库添加进来,然后还把原来生成的libthrift.lib 配置进来:

Sever工程 Server>属性->C/C++->常规->附加包含目录->\boost\boost_1_51

Sever工程 Server>属性->C/C++->常规->附加包含目录->\thrift-0.10.0\lib\cpp\src

Sever工程 Server>属性->C/C++->常规->附加包含目录->\thrift-0.10.1\lib\cpp\src\thrift

 

Sever工程 Server>属性->连接器->附加库目录->\boost\boost_1_51\lib

Sever工程 Server>属性->连接器->附加库目录->\thrift-0.10.1\lib\cpp\Debug

8、新建client工程,生成的这一堆文件复制到建立client的空项目里面,删除FaceDector_server.skeleton.cpp,并额外添加client.cpp文件。Client工程也做上面的配置。

9、client.cpp中加上下面代码:

 

#include <iostream>
#include "FaceDector.h"   
#include <thrift/transport/TSocket.h>  
#include <thrift/transport/TBufferTransports.h>  
#include <thrift/protocol/TBinaryProtocol.h>


using namespace apache::thrift;
using namespace apache::thrift::protocol;
using namespace apache::thrift::transport;

using boost::shared_ptr;

int main(int argc, char **argv) {
    boost::shared_ptr<TSocket> socket(new TSocket("localhost", 9090));
    boost::shared_ptr<TTransport> transport(new TBufferedTransport(socket));
    boost::shared_ptr<TProtocol> protocol(new TBinaryProtocol(transport));

    faceDector::FaceDectorClient client(protocol);
    try {
        transport->open();
        int res = client.add(100, 200);
        // 我们的代码写在这里  
      
        printf("recv res[%d]",res);
        transport->close();

    }
    catch(TException& tx){

        printf("error:",tx.what());
    }
    return 0;
}

10、这后,分别生成server和client工程,如提示缺少库或链接失败,可查看头文件和库文件路径是否正确,或者直接用NuGet下载缺少程序包。

11、最后先启动server再启动client,结果client能和server服务器通信,就ok

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值