windows下rpc框架thrift的环境配置

引用链接:
https://www.cnblogs.com/49er/p/7193829.html

最近在弄windows下 的Facebook的rpc 框架 thrift ,
网上东西看了很多, 但是大都不能一篇到位, 这里总结了一下,
也记一下自己遇到的问题和解决的方法

这里把我在实际过程中遇见的问题,以及问题的解决方法写一下:

1、版本问题:

基本是参照现这个版本来的:

  • Windows 10
  • Microsoft Visual Studio 2017
  • Apache Thrift 0.9.2.
  • Boost 1.72.0.
  • libevent-2.1.11-stable
  • OpenSSL 1.0.2l

2、概述

总体有两种思路,一种是利用virtual studio 的nuget 包管理工具,编译安装thrift以及其libevent,boost,openssl这几个依赖库,

一种是从这些各自的官网,或者git-hub上下载源码编译安装,但是由于我本地的nuget一直无法连接(有vpn),遂放弃这种方式

这个方式的指导连接在这里:

https://blog.csdn.net/xie1xiao1jun/article/details/53332504

3、实际问题

1、openssl, 原文的openssl编译安装方式写的部分地方不正确 以下是纠正部分:

https://blog.csdn.net/fm0517/article/details/91578554

4. 打开VS命令行工具

VS2013 x64 本机工具命令提示,进入目录下面的目录中
D:\ProgramIDE\Microsoft Visual Studio 12.0\VC\bin\amd64
执行命令:vcvars64.bat

5. 进入openssl源码目录下,执行配置

perl Configure VC-WIN64A no-asm --prefix=D:\360Downloads\openssl-1.0.2s
其中prefix后面的路径是源码路径。

2、libevet 配置文件找不到

使用libevent的问题
1)找不到<event2/event-config.h>
event-config.h在E:\libevent-2.1.8-stable\WIN32-Code\nmake\event2目录下,

因此编译完成后要把E:\libevent-2.1.8-stable\WIN32-Code\nmake下的所有文件和目录拷贝到E:\libevent-2.1.8-stable\include

以下是原文

Windows 10 Visual Studio 2017 安装配置 Apache Thrift (C++)
最近需要使用Thrift,所以在网上看了很多资料,不过很多教程都不够详细完整,导致我花了不少时间安装配置。在这里我把我配置的过程写下来和大家分享。

1 介绍
Apache Thrift 是一个跨语言的远程过程调用框架(RPC,Remote Procedure Call)。首先使用接口描述语言(IDL,Interface Description Language)编写 .thrift 文件,然后通过 Thrift 编译成C++、JAVA、C# 等语言的代码。这些代码之间可以互相远程调用。Thrift 封装了底层网络通信的内容,用户只需要编写顶层逻辑代码就可以了。

2 测试环境
Windows 10
Microsoft Visual Studio 2017
Apache Thrift 0.9.2.
Boost 1.64.0.
libevent-2.1.8-stable
OpenSSL 1.0.2l
3 使用 Visual Sdutio 2017 编译生成 libthrift.lib
下载安装Boost,记住**{Boost安装目录}。安装过程见Windows 10 Visual Studio 2017 安装配置 Boost。
下载安装OpenSSL,下载网址。安装过程见Windows 10 Visual Studio 2017 安装配置 OpenSSL。记住
{OpenSSL 目录}**
从 Apache Thrift 官网下载 Windows 平台的 Thrift 源代码和编译器。
下载libevent,非阻塞的 Thrift 服务器需要这个库。
解压缩下载的文件。
去**{thrift 安装目录}\lib\cpp 目录,点击thrift.sln**,打开 VS 项目,里面有两个项目libthrift 和 libthriftnb。
会有一个对话框询问是否升级,点击升级。
打开 Developer Command Prompt for VS 2017。

在 Developer Command Prompt 中进入 {libevent 安装目录}。
输入 nmake -f Makefile.nmake 来安装libevent。
完后后,右键 libthrift项目,点击属性 > C/C++ > 常规。
在附加包含目录中添加:
{boost 安装目录}\boost_1_64_0;{boost 安装目录}\boost_1_64_0\boost;{OpenSSL 目录}\inc32
点击库管理器 > 附加库目录,添加如下文件:
{OpenSSL 目录}\out32dll
右键 libthriftnb项目,点击属性 > C/C++ > 常规。在附加包含目录中添加
{boost 安装目录}\boost_1_64_0;{boost 安装目录}\boost_1_64_0\boost;{OpenSSL 目录}\inc32;{libevent_install_dir};{libevent_install_dir}\include;{libevent_install_dir}\WIN32-Code;
点击库管理器 > 附加库目录,添加如下文件:
{OpenSSL 目录}\out32dll
然后编译生成文件,如果使用DEBUG模式,会在**{thrift 目录}\lib\cpp\DEBUG**中生成libthrift.lib。
4 建立 Server、Client 示例
4.1 建立 Thrift C++ Server
创建Hello.thrift文件

Hello.thrift

namespace cpp Demo
service Hello{ string helloString(1:string para) i32 helloInt(1:i32 para) bool helloBoolean(1:bool para) void helloVoid() string helloNull() }

编译生成 C++ 源文件,会生成 gen-cpp文件夹

thrift -r --gen cpp Hello.thrift

生成的文件如下:

新建 Visual Studio 项目,并将生成的文件粘贴入项目文件夹中。

我们只需要实现Hello_server.skeleton.cpp中的方法即可。

右键项目,点击属性 > C/C++ > 常规 > 附加包含目录,添加:
{thrift 安装目录}\lib\cpp\src;{thrift 安装目录}\lib\cpp\src\thrift\windows;{boost 安装目录}\boost\boost_1_64_0;%(AdditionalIncludeDirectories)

点击链接器 > 常规 > 附加库目录,添加:

{boost 安装目录}\boost\boost_1_64_0\stage\lib;{thrift 安装目录}\lib\cpp\Debug;%(AdditionalLibraryDirectories)

点击链接器 > 所有选项 > 附加依赖项,添加:

libboost_thread-vc141-mt-gd-1_64.lib;libboost_chrono-vc141-mt-gd-1_64.lib;libthrift.lib;

如果是 0.91 之前的 thrift,还需要在Hello_server.skeleton.cpp源文件main函数前面加上如下代码:

WSADATA wsaData = {};
WORD wVersionRequested = MAKEWORD(2, 2);
int err = WSAStartup(wVersionRequested, &wsaData);

点击生成,Server端就可以启动了。
这些库的名称要以你自己安装的库为准,你需要去boost文件夹中查看这些库的准确名称。上面 {} 里面的安装目录也是这样。

4.2 生成 Thrift C++ Client
和 Server 的配置过程一样,只不过我们不用Hello_server.skeleton.cpp。我们需要自己编写客户端:

#include "Hello.h"
#include <thrift/transport/TSocket.h>
#include <thrift/transport/TBufferTransports.h>
#include <thrift/protocol/TBinaryProtocol.h>
#include <iostream>
#include <string>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));// 只需要实例化 HelloClient,然后就可以远程过程调用了Demo::HelloClient client(protocol);   transport->open();// Your Codes std::cout << client.helloInt(10030341) << std::endl;std::string tem = "hello from Client";client.helloString(tem, tem);std::cout << tem << std::endl;transport->close();return 0;
}

4.3 演示
4.3.1 Server

4.3.2 Client

二、nuget方式
配置nuget boost 库
点击右键:管理nuget程序包

Install-Package boost-vc140

(v1.62.0)

Install-Package openssl.v140.windesktop.msvcstl.dyn.rt-dyn

(OpenSSL 1.0.2d )

Install-Package libevent_vc120

(2.14 )

编译完成:

拷贝src,lib文件到项目

给出一个windows配置好的版本

里面包括vs2013,vs2015

thrift-master-0.9.3\lib\cppVS2013

thrift-master-0.9.3\lib\cppVS2015
————————————————
版权声明:本文为CSDN博主「冰_封」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/xie1xiao1jun/article/details/53332504

windows下rpc框架thrift的环境配置相关推荐

  1. Windows下的gcc/gc++编译环境配置

    最近有很多算法设计的网络大赛,其中大部分的C/C++都是采用Linux下的GCC/G++编译器.配置GCC编译器大概有这几种途径:装Linux系统.装Linux虚拟机或者在Windows环境下模拟Li ...

  2. Mysql5.7 windows 下压缩包方式安装以及环境配置

    文章目录 写在前面 一.下载mysql压缩包 二.配置环境变量与安装mysql服务 三.修改mysql密码 写在前面 由于电脑重装,所需要的软件和环境需要重新配置,mysql虽然经常会用到,但是配置和 ...

  3. windows下yacc和lex开发环境配置(Parser Generator篇)

    1.下载安装 Parser Generator是Windows下YACC和LEX的实现,是由英国Bumble-Bee Software公司开发. 下载地址http://www.bumblebeesof ...

  4. windows下python3关于机器学习的环境配置,Anaconda的安装和使用方法以及安装后无法打开的解决方法

    早就知道Anaconda可以管理好多个环境,由于原来一直没有这方面的需求,电脑上的python-base环境加一个pip几乎能解决所有问题,但现在看来不得不再添加其他的环境了.但是一个anaconda ...

  5. Windows 下基于 MikTeX 的 Latex 环境配置小记

    前言 前一阵子换了C盘,好多软件要重新安装.最近需要构建 tex 文件生成 pdf,发现之前配置好的后端已经无了.之前用的 TexLive,这次试试 MikTeX.TeX 相关的名词可以参考下面的链接 ...

  6. windows下php包下载及环境配置

    php开发环境包下载:https://windows.php.net/download 然后解压 将php.ini-development文件修改成php.ini(php配置文件) 打开php.ini ...

  7. windows下ITIM admin API开发环境配置,部署至tomcat

    开发环境构建 1. ibm_sdk50 java.security.   A. 下载/opt/IBM/itim/extensions/5.1/examples/apps/bin/jaas_login_ ...

  8. Windows下基于Anaconda的Tensorflow环境配置

    安装版本: Anaconda3.4  Windows 64bit (python 3.6.3) 下载地址(清华镜像): https://mirrors.tuna.tsinghua.edu.cn/ana ...

  9. Windows下安装Python模块时环境配置

    "Win +R"打开cmd终端,如果直接在里面使用pip命令的时候,要么出现"syntax invalid",要么出现: 'pip' is not recogn ...

最新文章

  1. Java5的 线程并发库
  2. 计算机接口配件,最近发布:最新的计算机外部接口计算机主板外部接口简介计算机主板接口简介...
  3. CPython对象模型:整型
  4. 如何写好一份工程师简历
  5. html性别选项卡,html选项卡
  6. 使用ant执行Java代码
  7. Mysql数据库使用及其问题合集一
  8. 基于Tkinter和百度Aip的人体关键点检测
  9. 干货首发,能够清理,带动画的自己定义控件CuteEditText
  10. SQL注入-联合注入
  11. codevs 5958 无
  12. 韩国有多大?相当于中国哪里?
  13. 集成电路的设计 —— 引脚
  14. sigmoid函数及其图像绘制
  15. 上海--黄山三日自助游功略白金终极版
  16. Python入门:微博注销不了?python一键清空微博文章内容
  17. 银河麒麟系统开启root用户登录
  18. -fpie -pie_Google的Pie Noon,TI-83上的Super Smash Bros等
  19. Python 的turtle模块讲座
  20. 如何做一个基于JAVA房产中介预约看房系统毕业设计毕设作品(springboot框架)

热门文章

  1. CUDA编程遇到的问题
  2. mysql主键约束和唯一性约束
  3. UVA 11752 超级幂
  4. xdoj 1009线段树求约瑟夫环
  5. Linux的fork实现原理,【Linux】Fork炸弹详解
  6. java datahandler_Java Web Services:使用DataHandler类发送文件
  7. geany怎么创建文件夹_SAP事务码太多,记不住怎么办?
  8. centos 多台 文件夹同步_CentOS7配置rsync实现文件同步
  9. Matplotlib三维绘图,这一篇就够了
  10. 1. CVPR2021-Papers-with-Code-Demo(CVPR2021论文下载)