Thrift windows下cpp編譯與使用

2021-08-07 05:27:45 字數 2387 閱讀 8306

本文主要目的是分別介紹在windows平台下的thrift安裝步驟,以及實現乙個簡單的demo演示thrift的使用方法。

安裝依賴庫:

boost

libevent(按需安裝,例項中我沒有使用)

0.10.0版本的cpp編譯比較容易成功,編譯64位版本的libthrift.lib,開啟thrift-0.10.0\lib\cpp\thrift.sln,裡面有libthrift和libthriftnb兩個工程,其中libthrift工程是常規的阻塞型server端(單執行緒server,乙個連線乙個執行緒server,執行緒池server),libthriftnb工程是非阻塞(non-blocking)模式的服務server端,也只有編譯libthriftnb時才需要依賴libevent庫,否則可以不編譯libevent庫;編譯libthrift只要把正確的boost路徑和openssl路徑配置正確,就可以編譯成功了。

設計thrift檔案(idl)

namespace

cpphellothrift.inte***ce

service

helloservice

通過idl工具生成源**
# 執行thirift命令生成原始檔:

thrift-0.9

.3.exe --gen cpp hello.thrift

以上命令生成c++語言的源**,然後會生成乙個gen-cpp目錄,裡面包含自動生成的幾個源**檔案:

實現server程式

helloservice_server.skeleton.cpp就是預設的server端程式入口,拷貝乙份重新命名為server.cpp,通過vs2015新建工程,將gen-cpp目錄下的所有檔案複製到新工程下,設定標頭檔案包含和lib庫目錄。 比如設定libthrift.lib的頭檔案目錄為thrift-0.9.3\lib\cpp\src,lib庫目錄為thrift-0.9.3\lib\cpp\x64\debug。

在server.cpp中新增**邏輯,然後編譯。

class helloservicehandler : virtual

public helloserviceif

void hellostring(std::string& _return, const

std::string& para)

int32_t helloint(const int32_t para)

bool helloboolean(const

bool para)

void hellovoid()

void hellonull(std::string& _return)

};

實現client程式通過vs2015新建工程,將gen-cpp目錄下的所有檔案複製到新工程下(除helloservice_server.skeleton.cpp之外),並增加上面手動實現的client.cpp,設定標頭檔案包含和lib庫目錄。

#include 

#include

#include

#include

#include

#include

#include

#include "hello_types.h"

#include "helloservice.h"

#include "hello_constants.h"

using

namespace ::apache::thrift;

using

namespace ::apache::thrift::protocol;

using

namespace ::apache::thrift::transport;

using

namespace ::apache::thrift::server;

using

namespace hellothrift::inte***ce;

using boost::shared_ptr;

int main(int argc, char** argv)

catch (texception& tx)

}

編譯

執行server程式和client程式

所有工程檔案已放到github上

C 下新增C 動態庫

這個網上很多。但是沒有能執行起來的。自己經過一周多的摸索進行稍微總結下。首先是 c 下的宣告 標頭檔案 extern c declspec dllexport intadd intsm cpp檔案 intadd intsm 標頭檔案 extern c declspec dllexport intad...

Linux 下C和C 程式設計

最近在學linux,決心用這個系統進行開發工作,所以,無論是進行開發工作,還是在oj上刷題,學會linux下的c和c 程式設計都是很有必要的。1,先有linux環境 搭mingw和cygwin都有點麻煩,最最簡單的辦法還是裝個真正的linux,用虛擬機器也好,在網路上的另一台機器也好。這樣不僅快,而...

C 於C 的拓展(下)

72 程序 乙個程式的動態執行過程。73 process類 程序類 74 前台程序和後台程序 所有前台程序停止時,後台程序自動停止。75 cpu執行速度快,i o介面速度慢,充分利用cpu完成其他操作的同時,可以開個執行緒給i o介面 比如 鍵盤輸入 76 thread類 常用的兩種過載形式 pub...