thrif rpc 编译

Thrift windows compile

安装准备

1. 安装boost

  1. 下载boost
  2. 执行脚本 bootstrap.bat
  3. 执行命令 b2.exe
  4. 执行命令 b2.exe install(Optional)

    导出boost include lib

2. 安装openssl

  1. 下载openssl
  2. 安装
    1. 安装activeperl,百度google自己找吧,官网下还得建账户
    2. 安装 nasm
    3. 把activeper和nasm添加到环境变量
    4. 编译
    # 在vs 对应command prompt 中执行
    perl Configure no-shared VC-WIN64A --prefix=E:\BuildOpenSSL3
    # 添加no-shared 为编译静态库,不添加则是动态库
    # VC-WIN64A 64位
    nmake
    nmake install
    

3. 安装libevent

  1. 下载libevent
  2. 编译
    note:如果编译x64,需要在Makefile.nmake文件中的LIBFLAGS变量,增加/MACHINE:X64
    nmake /f Makefile.nmake
    
  3. 获取lib
    在win32下需要把Win32-Code/nmake下的所有文件和文件夹拷贝到libevent导出的include
    • libevent 在链接高版本openssl 时候会找不到 libeay32.lib 和ssleay32.lib 这两个文件

      mklink  ssleay32.lib  libssl.lib
      mklink  libeay32.lib  libcrypto.lib
      
    • UINT32_MAX未定义

      在mm-internal.h文件里面引入头文件: #include <stdint.h>

    • error LNK2019: 无法解析的外部符号 __imp_if_nametoindex

      在test/Makefile.nmake中LIBS中添加Iphlpapi.lib

      LIBS=…\libevent.lib ws2_32.lib shell32.lib advapi32.lib Iphlpapi.lib

4. flex 和bison安装

  1. 下载 winflexbison
  2. 设置环境变量
    把路径添加到path中就行了

thrift 安装

  1. 下载thrift 生成器
  2. 下载thrift源码
  3. 编译语言包
    • 进入lib\cpp
      打开对应.sln
      libtriftnb是加入libevent实现non-blocking工程

    • 修改对应包含include目录
      boost
      openssl
      libevent

    • 然后就是正常编译了,这是编译静态库.lib
      如果编译的是静态库,应该取消符号导出,不然在使用的时候会报
      无法解析的外部符号"class apache::thrift::TOutput apache::thrift::GlobalOutput"
      需要添加预处理器宏THRIFT_STATIC_DEFINE
      (可以查看导出文件:thrift_export.h)
      动态库还没测试

    • 编译可能出现的错误

      • 出现无法找到 <thrift/configh>头文件时
        将thrift\lib\cpp\src\thrift\windows\config.h拷贝到上一级目录。
        或者直接替换为#include<config.h>
        在使用的时候可能还会报config的错误,加入到include_directoris就行
      • 出现PACKAGE_VERSION未声明的定义时
        将根目录下 config.h 的宏定义 PACKAGE_VERSION 拷贝到 thrift\lib\cpp\src\thrift\config.h 文件内
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值